Задать вопрос

Как исправить разрыв строк при скачивании файла (ftplib)?

Есть код подключения к FTP.
Подключаюсь, обнаруживаю список файлов.
Скачиваю файлы.
Файлы на FTP сервере периодически обновляются.
При обновлении я хочу скачать файл и дозаписать уже текущий, обновить его (синхронизировать).
spoiler
ftp = ftplib.FTP()
ftp.connect(host, port)
loginRepsonse = ftp.login(user, password)   #подключаюсь             
ftp.encoding = 'utf-8'
ftp.cwd('/Logs')
log_list = []
log_name = ftp.retrlines('LIST', log_list.append) #смотрю список файлов
for files in log_list:
    filename = re.search('\d\d\:\d\d\s(.*).log$', files) #выбираю файлы, названия файлов
    if filename:
         filename1 = filename.group(1)+".log"#задаю соответствие файла .log 
         content = []
         ftp.retrbinary('RETR ' + filename1, content.append, 8 * 1024)
         for line in content:
               line = line.decode("utf-16le").strip().splitlines()

При скачивании файла происходит разрыв строк, все время в разных местах.
unknown.png
Пример логов с сервера и того, что получается (красным отмечен разрыв строк).

Как можно это исправить?
  • Вопрос задан
  • 104 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
dimonchik2013
@dimonchik2013
non progredi est regredi
написать правильный код

1) не скачивать дописывающийся файл, а только gz после ротации логов, например
или
2) всунуть сюда проверку .strip().splitlines() , ты перевод строки убиваешь этим

еще вариант - применить к скачиванию wget , хотя с дописывающимся все равно будет лажа
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы