Python - 将文件从ftp服务器下载到其他本地名称

时间:2014-07-09 18:57:26

标签: 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服务器上具有完整路径的文件的名称,类似于“/share/path/to/file.txt”

在perl中这很容易:

 $ftp->get($ftp_file, $local_file)

编辑: 上面的代码不起作用。我想将remoteName文件下载到本地计算机和本地计算机上的文件名为localName。我怎么做? :d EDIT2:将其列为清单

谢谢

1 个答案:

答案 0 :(得分:2)

您的代码存在的主要问题是:

  • item实际上从未在for循环
  • 中使用
  • localNameremoteName未在任何地方指定

此代码适用于我的机器:

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()

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