python - 返回到 sftp 远程文件的开头

标签 python sftp paramiko

我正在使用 Paramiko 通过 sftp 打开远程文件。远程文件有一个短语列表,我想遍历文件的每一行以查看给定短语是否与远程文件中的短语匹配。

用于获取远程文件的代码:

    self.ssh = paramiko.SSHClient()
    self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    self.ssh.connect(host, username=username, password=password)

    self.sftp_client = self.ssh.open_sftp()
    self.remote_file = self.sftp_client.open(remote_file_path, mode='rb')

def checkSubnet(self, phrase):
    found = 0
        for line in self.remote_file:
            if phrase in line:
                found = 1
                print "FOUND IT"
                break
    return found

这适用于匹配的第一个短语,但是如果要匹配的下一个短语位于文件中的前一个短语之前,则它将找不到它。我已将其调试为 for 循环从上次比赛中先前中断的位置重新开始。我的理解是它会从文件的顶部重新开始。

有什么办法可以改变这种行为吗?或者甚至是更好的方法来做到这一点。该文件包含大约 97,000 个短语,并且每天都会发生变化,因此不可能保留本地版本。

谢谢

最佳答案

for 循环之前调用 seek(0) 来返回到文件的开头:

def checkSubnet(self, phrase):
    found = 0

    self.remote_file.seek(0)

    for line in self.remote_file:
        if phrase in line:
            found = 1
            print "FOUND IT"
            break

    return found

关于python - 返回到 sftp 远程文件的开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26745102/

相关文章:

c# - 如何使用 WinSCP 和 C# 从服务器获取 SSH 指纹

python - "ping"不允许执行

python - paramiko ssh.connect - 要发送什么参数?

python - 计算器异常处理,为什么这个例子可以,而我的不行?

python - 根据pandas中的条件聚合(连接)文本列

java - JSch库中SCP协议(protocol)实现说明

java - jscape sftp上传保留文件权限

python - paramiko 通过 sftp 上传文件夹

python - Pandas,来自 2 个 DF 的两列的总和值

python - hist 中密度为 True 的 numpy.histogram 的维度