【问题标题】:Search and replace on a file using Paramiko SFTP client使用 Paramiko SFTP 客户端搜索和替换文件
【发布时间】:2018-09-11 20:29:50
【问题描述】:

我在 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'

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

【问题讨论】:

    标签: python sftp paramiko


    【解决方案1】:

    确实,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)
    

    显然这对于​​大文件来说效率很低。此外,如果替换字符串比原始字符串短(不是这种情况),您需要在写回内容后截断文件。

    【讨论】:

      猜你喜欢
      • 2011-04-07
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 2022-01-21
      • 2017-11-24
      • 2023-01-31
      • 2022-01-07
      • 1970-01-01
      相关资源
      最近更新 更多