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



我在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")
属性

错误:"SFTPClient"对象没有属性"替换">

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

事实上,帕拉米科没有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)

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

最新更新