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
чтобы избежать этой проблемы (см. связанный билет). Я не хотел вносить это изменение ранее в выпуске с исправлением ошибок, потому что это несовместимое с обратным изменением изменение, которое может нарушить работающий в данный момент код.