Поиск и замена файла с использованием SFTP-клиента Paramiko - PullRequest
0 голосов
/ 11 сентября 2018

У меня есть файл на 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 голосов
/ 11 сентября 2018

Действительно, в 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)

Очевидно, что это может быть довольно неэффективно для больших файлов. Также, если замещающая строка короче оригинала (не в этом случае), вам нужно обрезать файл после обратной записи содержимого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...