Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-将文件从ftp服务器下载到不同的本地名称_Python_Ftp_Download - Fatal编程技术网

Python-将文件从ftp服务器下载到不同的本地名称

Python-将文件从ftp服务器下载到不同的本地名称,python,ftp,download,Python,Ftp,Download,我有以下代码: ftp = ftplib.FTP(ftp_srv) ftp.login(ftp_usr, ftp_pass) for item in list: f = open(item.localName,"wb") ftp.retrbinary("RETR " + item.remoteName, f.write) ftp.quit() “localName”是本地计算机上的文件名,例如:one.txt “remoteName”是FTP服务器上具有完整路径的文件名,类

我有以下代码:

ftp = ftplib.FTP(ftp_srv)
ftp.login(ftp_usr, ftp_pass)

for item in list:
    f = open(item.localName,"wb")
    ftp.retrbinary("RETR " + item.remoteName, f.write)
ftp.quit()
  • “localName”是本地计算机上的文件名,例如:one.txt
  • “remoteName”是FTP服务器上具有完整路径的文件名,类似于“/share/path/to/file.txt”
在perl中,这非常简单:

 $ftp->get($ftp_file, $local_file)
编辑:
上面的代码不起作用。我想将remoteName文件下载到本地计算机,并在本地计算机上将该文件命名为localName。我该怎么做D 编辑2:把它列成一个清单


谢谢

代码的主要问题是:

  • 项在
    for
    循环中从未实际使用过
  • localName
    remoteName
    未在任何位置指定
此代码在我的机器上工作:

import ftplib

ftp_srv = 'ftp.example.com'
ftp_usr = 'user'
ftp_pass = 'password'

ftp = ftplib.FTP(ftp_srv)
ftp.login(ftp_usr, ftp_pass)

files = [('remote_file1', 'local_file1'), ('remote_file2', 'local_file2')]

for file_ in files:
    with open(file_[1], "wb") as f:
        ftp.retrbinary("RETR " + file_[0], f.write)
ftp.quit()

每个
文件都是一个包含服务器上的文件名以及您希望它在本地计算机上具有的名称的文件,这些名称使用方括号表示法引用。

那么您的问题是什么?上面的代码不起作用。我想将remoteName文件下载到本地计算机,并在本地计算机上将该文件命名为localName。我该怎么做D谢谢这个脚本不能工作(没有列表、localName或remoteName变量)-这应该是伪代码还是真正失败的脚本?。。。“不起作用”怎么不起作用?向我们展示错误。这不是伪代码,这是实际代码,我只是删除了一些部分,因为它不是相关的好例子,除了for循环完成后最终输出文件保持打开状态外,使用
打开(文件[1],“wb”)怎么样改为f:
?我需要更改工作目录还是可以使用完整路径下载文件?我尝试使用完整路径,但出现了一个错误,我不知道这是我做错了还是现在应该可以工作。您可以使用完整路径,但必须确保路径上的所有目录都存在。例如,如果您正在写入
/tmp/mydir1/local_文件
,则必须在运行脚本之前创建
mydir1
,或者在写入之前添加代码以创建目录。这样做的结果是,我做错了……n00b错误(我是n00b)-我在路径中添加了不存在的内容。谢谢大家的帮助!