【发布时间】:2011-12-30 05:41:32
【问题描述】:
我在检索远程 FTP 站点上的目录列表时遇到了困难。 This 答案不起作用(我没有得到任何输出,它似乎挂起)。
这是我能想到的最简单的实现——它应该只打印出它找到的每个目录的完整路径:
import ftplib
def ftp_walk(ftp):
print 'Path:', ftp.pwd()
dirs = ftp.nlst()
for item in (path for path in dirs if path not in ('.', '..')):
try:
ftp.cwd(item)
print 'Changed to', ftp.pwd()
ftp_walk(ftp)
ftp.cwd('..')
except Exception, e:
print item, e
ftp = ftplib.FTP('ftp.site.com')
ftp.login('user', 'pass')
ftp.cwd('1')
ftp_walk(ftp)
我的目录结构是:
1/
1-1/
1-2/
1-2/
1-3/
1-4
但是,它只输出以下内容。它建议将工作目录更改一次到一个新的子目录,但是当使用新的 cwd 调用 ftp_walk() 时,它不会继续前进:
> Path: 1/
> Changed to 1-1/
【问题讨论】:
-
挂在哪个函数上? (你可以在你的代码中添加一些打印语句来看看它发生在哪里)
-
另外,您的代码在尝试 cwd 进入之前不会检查条目是否为目录。
-
谢谢,我已经编辑了我的问题。
-
我不知道有一个叫做
tuple comprehension的东西。第 4 行的语句是什么? -
Eknath - 好问题;这是我的一个错误。但是,它产生与列表推导相同的输出。
标签: python ftp directory-structure