在FTP中关闭交互模式

时间:2014-07-09 21:19:53

标签: python ftp subprocess

我正在尝试从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")命令,就像我手动处理这个命令一样。但是,当我添加了子进程时,它会给我一个错误,即#34;系统无法找到指定的文件"所以这也不起作用。此错误来自subprocess.py模块。

1 个答案:

答案 0 :(得分:0)

我想我应该在这里发布。感谢Greg Hewgill对答案的评论。我只是需要一个空间" Retr"在行

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