Python ftp仅列出目录,而不列出文件

yos*_*ssi 5 python directory ftp list cwd

我想列出ftp目录上的所有目录,然后输入每个目录。问题是我的代码还会列出文件并尝试输入它们。

  1. 有没有办法从ftp.cwd方法获取返回值?
  2. 有没有一种方法可以只获取目录名,或者有一种更好的方法来执行我想要的操作。

这是我现在使用的代码:

    from ftplib import FTP
    ftp = FTP('ftp.overtherainbow.com')
    ftp.login()
    for name in ftp.nlst():
        print "listing: " + name
        ftp.cwd(name)
        ftp.retrlines('LIST')
        ftp.cwd('../')
Run Code Online (Sandbox Code Playgroud)

Uku*_*kit 5

FTP协议没有办法区分目录和文件(如清单所示)。我认为最好的选择是尝试失败

try:
    ftp.cwd(name)
except ftplib.error_perm as detail:
    print("It's probably not a directory:", detail)
Run Code Online (Sandbox Code Playgroud)

否则,您可能想解析目录列表中的输出。但是,这不会独立于平台,因为目录列表因操作系统而异。如图所示...