我想列出 ftp 目录中的所有目录,然后输入每个目录。 问题是我的代码还列出了文件并尝试输入它们。
- 有没有办法从方法 ftp.cwd 中获取返回值?
- 有没有办法首先只获取目录名称,或者有更好的方法来做我想做的事。
这是我现在使用的代码:
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('../')
最佳答案
FTP 协议(protocol)无法区分目录和文件(如列表)。我认为最好的选择是尝试失败
try:
ftp.cwd(name)
except ftplib.error_perm as detail:
print("It's probably not a directory:", detail)
否则您可能想要解析目录列表的输出。不过,这不会与平台无关,因为目录列表因操作系统而异。 如图here...
关于Python ftp 只列出目录而不是文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6169017/