【问题标题】:Python FTP download not workingPython FTP下载不起作用
【发布时间】:2014-03-02 03:26:24
【问题描述】:

我正在尝试使用 python 从 FTP 下载文件。我能够成功移入目录,但无法下载文件。

我使用的命令是ftp.retrbinary('master.idx', open(fname,'wb').write)

错误如下。看起来该命令正在寻找 MASTER.IDX 而不是 master.idx

我要下载的文件的完整路径是ftp://ftp.sec.gov/edgar/full-index/2011/QTR2/master.idx

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/ftplib.py", line 406, in retrbinary
    conn = self.transfercmd(cmd, rest)
  File "/usr/lib/python2.7/ftplib.py", line 368, in transfercmd
    return self.ntransfercmd(cmd, rest)[0]
  File "/usr/lib/python2.7/ftplib.py", line 331, in ntransfercmd
    resp = self.sendcmd(cmd)
  File "/usr/lib/python2.7/ftplib.py", line 244, in sendcmd
    return self.getresp()
  File "/usr/lib/python2.7/ftplib.py", line 219, in getresp
    raise error_perm, resp
ftplib.error_perm: 500 MASTER.IDX not understood

【问题讨论】:

  • 我的猜测是 MASTER 中返回的文件名。IDX 是该 FTP 服务器的某种特性。
  • 如果您发布了您拥有的整个程序,帮助您会容易得多。

标签: python python-2.7 ftp


【解决方案1】:

我不能说为什么名字会变成大写。无论如何,在使用 FTP 时,我是这样制作的,它可能会对您有所帮助:

server = "URL.of.server"
directory = "directory/where/the/file/is"
filename = "nameoffile.txt"

from ftplib import FTP
ftp = FTP(server) #Set server address
ftp.login()  # Connect to server
ftp.cwd(directory) # Move to the desired folder in server
ftp.retrbinary('RETR ' + filename,open(filename, 'wb').write) # Download file from server
ftp.close() # Close connection

我认为可能是'RETR',如果你不写,服务器可能不明白你要做什么

【讨论】:

    【解决方案2】:

    改用 python 的wget 模块。这是一个例子sn-p

    import wget
    fileloc = '/path/to/the/file/foo.txt'
    wget.download(fileloc)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多