Ошибка чтения имен каталогов 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 шт):

Автор решения: MER_MOLOKO

Я нашел костыль для работы "nlst":

ftp.sendcmd('OPTS UTF8 ON')
→ Ссылка
Автор решения: 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)
→ Ссылка