关闭FTP中的交互模式
我正在尝试自动化从一个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)