使用Paramiko SFTP客户端搜索并替换文件

时间:2018-09-11 11:59:09

标签: python sftp paramiko

我在SFTP服务器上有一个文件,可以连接到该文件以打开和写入。但是,我需要搜索一段文本并将其替换为另一段。使用Paramiko SFTP可以做到这一点吗?

我的代码如下所示

for filename in s.sftp.listdir():
    file = sftp.open(filename,'ar+')
    line = file.readable()
    file = file.write("Test Test Test")
    file = sftp.close()

我尝试使用sftp.replace(),但是当我运行它时,出现以下错误

    file = s.sftp.replace("15062018", "11092018")
  

AttributeError:“ SFTPClient”对象没有属性“ replace”

第一个日期是文件中当前的日期,第二个日期是我要替换的日期。

1 个答案:

答案 0 :(得分:0)

的确,Paramiko中没有SFTPClient.replace

您必须将文件内容读取到变量,执行替换并写回。

for filename in sftp.listdir():
    with sftp.open(filename, 'r+') as file:
        contents = file.read()
        contents = contents.replace("15062018", "11092018")
        file.seek(0)
        file.write(contents)

显然,这对于大文件而言可能效率很低。另外,如果替换字符串比原始字符串短(不是这种情况),则需要在写回内容后截断文件。

相关问题