Skip to main content
 首页 » 编程设计

Python ftplib之retrbinary 因零字节文件超时而失败

2025年05月04日11langtianya

使用 Python 2.6 并以被动模式从 FTP 服务器下载文件,我发现如果源文件为空(0 字节),retrbinary 会失败并超时。这是一个错误还是我缺少配置选项?

ftp.retrbinary('RETR digital.conf', open('digital.conf','wb').write) 
 
Downloading digital.conf 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
  File "download.py", line 13, in run 
    ftp.retrbinary('RETR %s' % source, callback) 
  File "c:\Python26\lib\ftplib.py", line 398, in retrbinary 
    conn = self.transfercmd(cmd, rest) 
  File "c:\Python26\lib\ftplib.py", line 360, in transfercmd 
    return self.ntransfercmd(cmd, rest)[0] 
  File "c:\Python26\lib\ftplib.py", line 337, in ntransfercmd 
    resp = self.getresp() 
  File "c:\Python26\lib\ftplib.py", line 216, in getresp 
    raise error_temp, resp 
ftplib.error_temp: 421 Timeout 

其他非零字节文件传输正常。

请您参考如下方法:

This is Your session idle time too long. 你可以在主席文件后进入实例化ftplib。否则。修改ftp软件配置。

比如你使用vsftpd,你可以在vsftpd.conf中添加如下配置:

idle_session_timeout=60000 # 默认为 600 秒