当前位置: 首页 > 面试题库 >

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

柏正平
2023-03-14
问题内容

使用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'

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

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

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

有什么我想念的东西吗?


问题答案:

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

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

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

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



 类似资料:
  • 问题内容: Python具有运行FTP通信的标准库模块。它有两种获取目录内容列表的方法。一个会返回给定目录名称作为参数的目录内容列表。(如果给定文件名,它将返回文件名。)这是列出目录内容的可靠方法,但不提供任何指示列表中的每个项目是文件还是目录。另一个方法是,它以字符串格式列出作为参数给出的目录的目录内容(或给定文件名的文件属性)。 根据上一个关于Stack Overflow的问题,解析的结果可能

  • 问题内容: 我似乎无法获得任何说明如何执行此操作的搜索结果。 我要做的就是能够知道给定的路径是文件还是目录(文件夹)。 问题答案: 应该告诉你。从文档: 从fs.stat()和fs.lstat()返回的对象属于这种类型。 注意: 将 上述溶液 将一个IF; 例如,or或不存在。 如果您想要一个或方法,请尝试按约瑟夫在下面的评论中所述。

  • 我想检查路径是文件还是目录。如果是目录,那么将目录和文件分别记录下来。稍后我想将它们作为json对象发送。 nodejs binding.lstat(PathModule._Makelong(路径)) 更新:找到解决方案。我必须这样添加testFolder+文件:

  • 问题内容: 我正在尝试连接到FTP,但无法运行任何命令。 将引发此错误: 错误: [WinError 10060]连接尝试失败,因为一段时间后连接方未正确响应,或者由于连接的主机未能响应,建立的连接失败 我已经使用FileZilla测试了连接(在同一台计算机上运行),并且工作正常。 这是FileZilla日志: 问题答案: 状态:服务器发送了具有不可路由地址的被动回复 以上表示FTP服务器配置错误

  • 问题内容: 我有以下代码,可以轻松连接到FTP服务器并打开一个zip文件。我想将该文件下载到本地系统。怎么做? 问题答案:

  • 问题内容: 在python中,如何检查对象是否为生成器对象? 试试这个- 给出错误- (我知道我可以检查对象是否具有将其用作生成器的方法,但是我想以某种方式可以确定任何对象的类型,而不仅仅是生成器。) 问题答案: 您可以从以下类型使用GeneratorType: