Ошибка чтения имен каталогов FTP с помощью "nlst" python
Не получается получить список имен файлов c FTP сервера с помощью "nlst" на Python. Используется FTP windows 7 iis 7. Сама ошибка выглядит так: 'utf-8' codec can't decode byte 0xcf in position 1288: invalid continuation byte
Я пытался использовать "list" но он работает не стабильно, выдавая примерно такую же ошибку.
Код который не работает: print(ftp.nlst())
Ответы (2 шт):
Автор решения: Andrew Hobbit
→ Ссылка
Я полагаю, сервер отдаёт имена в cp1251 или cp866. Можно попробовать при создании ftp подключения указать нужную кодировку.
ftp = FTP(encoding='cp866')
Или использовать что-то типа такого:
def safe_nlst(ftp):
try:
return ftp.nlst()
except UnicodeDecodeError:
original_encoding = ftp.encoding
for encoding in ['cp866', 'cp1251', 'latin_1']:
try:
ftp.encoding = encoding
return ftp.nlst()
except:
continue
ftp.encoding = original_encoding
raise
files = safe_nlst(ftp)
print(files)