关闭FTP中的交互模式

0 投票
1 回答
2171 浏览
提问于 2025-04-18 12:42

我正在尝试自动化从一个FTP源下载多个文件。这些文件会跨越多个年份、日期,并来自多个收集数据的网站。目前,我正在努力让基本的下载功能正常工作。我可以下载一个文件,但下载多个文件时就失败了。我知道手动操作时,我们会先进入目录,然后

$>prompt
$>mget *.*

这是我第一次尝试的代码...

import ftplib, subprocess
session = ftplib.FTP(host,user,password)
session.cwd(path)
subprocess.call("prompt")
files = session.nlst()
for f in files:
    print f
    session.retrbinary(("RETR" + f), open(f, 'wb').write)
session.quit()

如果不使用subprocess.call,这段代码会下载第一个文件,然后报错说“命令无法理解”。我猜这是因为它在提示输入,就像手动下载时那样。因此,我认为我需要在这里加上subprocess.call("prompt")命令,就像手动处理时一样。然而,当我加上subprocess后,它又报错说“系统找不到指定的文件”,所以这也不行。这个错误是从subprocess.py模块中出来的。

1 个回答

0

我想我应该把这个发在这里。感谢评论区的Greg Hewgill给出的答案。我只是在这一行的“Retr”后面需要加一个空格。

session.retrbinary(("RETR " + f), open(f, 'wb').write)

撰写回答