gpt4 book ai didi

python - 在 Python 中递归列出 FTP 目录

转载 作者:行者123 更新时间:2023-11-28 19:26:49 27 4
gpt4 key购买 nike

我在检索远程 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/

最佳答案

好吧,我想您正在登录的用户可以访问所有该结构,否则它将返回错误并且不会列出该特定目录。

如果您遇到异常,请将其放在此处。也许你应该 try..finally 你的 cwd,这样它就不会丢失。我可以建议:

    try:
ftp.cwd(item)
print 'Changed to', ftp.pwd()
try:
ftp_walk(ftp)
finally:
ftp.cwd('..')
except ftplib.error_perm, e:
print item, e

关于python - 在 Python 中递归列出 FTP 目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8676508/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com