一尘不染

确定清单是FTP上的Python中的目录还是文件

python

Python具有ftplib运行FTP通信的标准库模块。它有两种获取目录内容列表的方法。一个FTP.nlst()会返回给定目录名称作为参数的目录内容列表。(如果给定文件名,它将返回文件名。)这是列出目录内容的可靠方法,但不提供任何指示列表中的每个项目是文件还是目录。另一个方法是FTP.dir(),它以字符串格式列出作为参数给出的目录的目录内容(或给定文件名的文件属性)。

根据上一个关于Stack Overflow的问题,解析的结果dir()可能很脆弱(不同的服务器可能返回不同的字符串)。我正在寻找某种方法来列出仅通过FTP包含在另一个目录中的目录。据我所知,d我想出的唯一解决方案是删除字符串的权限部分中的a
,但是我想我不能保证权限将出现在不同服务器之间的同一位置。是否有更健壮的解决方案来通过FTP识别目录?


阅读 436

收藏
2021-01-20

共1个答案

一尘不染

不幸的是,FTP没有命令仅列出文件夹,因此解析从ftp.dir()获得的结果是“最佳”的。

一个简单的应用程序,假设ls是标准结果(不是Windows ftp)

from ftplib import FTP

ftp = FTP(host, user, passwd)
for r in ftp.dir():
    if r.upper().startswith('D'):
        print r[58:]  # Starting point

标准FTP命令

自定义FTP命令

2021-01-20