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

发布于 2021-01-29 19:33:54

使用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'并且可以确定第一个字符,但是进一步阅读表明,并非所有输出都具有相同的格式。

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

有什么我想念的东西吗?

关注者
0
被浏览
87
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看