FTP 服务器在下载完成前断开连接

FTP server breaks connection before download is complete

有时,FTP 服务器会在文件完全下载之前关闭连接。

这是我的代码:

ftp = ftplib.FTP(site)
ftp.login(user, pw)
ftp.cwd(dir)
remotefiles = ftp.nlst()
for file in remotefiles:
    if fnmatch.fnmatch(file, match_text):
        if os.path.exists(file):
            if True: print file, 'already fetched'
        else:
            if True: print 'Downloading', file
            local = open(file, 'wb')                
            try:            
                ftp.retrbinary('RETR ' + file, local.write)
            finally:
                local.close()                       
            if True: print 'Download done.' 

您可以在 FTP 构造函数中指定一个 timeout 参数并将其设置为 0 或某个非常大的值,例如 sys.maxint

class ftplib.FTP([host[, user[, passwd[, acct[, timeout]]]]])

此外,您可以打开调试以查看幕后发生的情况。

ftp = ftplib.FTP(site, user, pw, timeout=0)
ftp.set_debuglevel(2)

希望对您有所帮助。