Python FTP 下载不工作

2 投票
2 回答
2018 浏览
提问于 2025-04-17 20:28

我正在尝试用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

2 个回答

1

可以使用Python的模块来代替。下面是一个示例代码片段:

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

我不知道为什么名字会变成大写。不过在使用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 '这个指令,如果你不写的话,服务器可能就不知道你想要做什么。

撰写回答