ftputil:即使目录不为空,listdir也将返回一个空列表

时间:2018-07-10 06:56:29

标签: python listdir ftputil

我想在Python中使用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']

我想念什么?

1 个答案:

答案 0 :(得分:2)

上面的观察可能是由于https://ftputil.sschwarzer.net/trac/ticket/110造成的。如果FTP服务器不了解用于列出隐藏目录和文件的FTPHost.listdir选项,并且将该选项解释为要列出的目录或文件,则-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.
...

在将来的ftputil版本4.x中,use_list_a_option将默认为False,以避免出现此问题(请参阅链接的票证)。我不想在错误修正版本中更早进行更改,因为这是向后不兼容的更改,并且可能会破坏当前工作的代码。