ftputil: listdir возвращает пустой список, даже если каталог не пустой

Я хочу использовать ftputil вместо ftplib в питоне.
На общедоступном ftp-сервере все отлично работает с обеими библиотеками:

host = 'ftp.avm.de'
user = 'anonymous'
passwd = ''


import ftputil
with ftputil.FTPHost(host, user, passwd) as ftp:
    print(ftp.getcwd(), ftp.listdir('.'))


import ftplib
with ftplib.FTP(host, user, passwd) as ftp:
    print(ftp.pwd(), ftp.nlst('.'))

выход:

/ ['archive', 'fritzbox', 'fritzpowerline', 'fritzwlan']
/ ['archive', 'fritzbox', 'fritzpowerline', 'fritzwlan']

Если я делаю это на FTP-сервере (Windows CE6) в моей локальной сети, вывод ftputil пока пусто ftplib правильно перечисляет все файлы:

/ []
/ ['1', '2', '3']

Что мне не хватает?

0 ответов

Наблюдение выше может быть из-за https://ftputil.sschwarzer.net/trac/ticket/110. Каталоги и файлы будут отсутствовать в FTPHost.listdir результат, если FTP-сервер не понимает -a опция для отображения скрытых каталогов и файлов и интерпретирует эту опцию как каталог или файл для списка.

Попробуйте установить use_list_a_option в False после создания FTPHost пример:

ftp_host = ftputil.FTPHost(host, user, password)
ftp_host.use_list_a_option = False
# Use ftp_host as before.
...

В будущей версии 4.x ftputil, use_list_a_option по умолчанию будет False чтобы избежать этой проблемы (см. связанный билет). Я не хотел вносить это изменение ранее в выпуске с исправлением ошибок, потому что это несовместимое с обратным изменением изменение, которое может нарушить работающий в данный момент код.

Другие вопросы по тегам