小编典典

使用Python和ftplib检查FTP服务器上的对象是文件还是目录

python

使用Python和ftplib,我正在编写一个泛型函数来检查FTP目录中的项目是文件还是目录。由于使用MLSD功能可能不一定适用于所有服务器(我的一个用例并未提供此功能),因此我尝试通过这种有效但粗略的方式来确定它,方法是尝试将目录更改为对象,如果对象是文件,将引发异常,并相应地设置文件类型。

file_type = ''
try:
    ftp.cwd(item_name)
    file_type = 'dir'
    ftp.cwd(cur_path)
except ftplib.error_perm:
    file_type = 'file'

我已经在Internet和图书馆文档中搜索了其他方法,但是找不到在大多数情况下都可以使用的方法。

例如,使用该dir函数,我可以检查第一个字符是否存在,'d'并且可以确定第一个字符,但是进一步阅读表明,并非所有输出都具有相同的格式。

我在此方法中看到的最大缺陷是,如果我没有权限将目录更改为指定的文件夹;因此它将被视为文件。

有什么我想念的东西吗?


阅读 238

收藏
2020-12-20

共1个答案

小编典典

没有更好的方法(通常使用FTP协议,而不仅仅是ftplib)。

MLST/MLSD是唯一正确的和可靠的方式。

如果您不能使用MLST/ MLSD,则尝试使用CWD下一个最佳选择。

尝试解析LIST是一个后备选项。但是您需要知道服务器使用程序可以理解的列表格式。

2020-12-20