【问题标题】:Get large files from FTP with python lib使用 python lib 从 FTP 获取大文件
【发布时间】:2015-07-23 00:33:00
【问题描述】:

我需要从 FTP 服务器下载一些大文件(每个文件 >30GB)。我正在使用 python 标准库中的 ftplib,但有一些陷阱:如果我下载一个大文件,如果文件完成,我将无法再使用连接。之后我收到 EOF 错误,因此连接已关闭(由于超时?)并且对于每个后续文件,我都会收到错误 421。

根据我的阅读,有两个联系。数据和控制通道,其中数据通道似乎工作正常(我可以完全下载文件)但同时控制通道超时。 我还读到 ftplib(和其他 python ftp 库)不适合大文件,可能只支持大约 1GB 的文件。 这里有一个与此主题类似的问题:How to download big file in python via ftp (with monitoring & reconnect)? 这不太一样,因为相比之下我的文件很大。

我当前的代码如下所示:

import ftplib
import tempfile

ftp = ftplib.FTP_TLS()

ftp.connect(host=server, port=port)
ftp.login(user=user, passwd=password)
ftp.prot_p()
ftp.cwd(folder)

for file in ftp.nlst():
    fd, local_filename = tempfile.mkstemp()
    f = open(fd, "wb")
    ftp.retrbinary('RETR %s' % file, callback=f.write, blocksize=8192)
    f.close()

是否对它或我可以使用的其他支持大文件的库进行任何调整?

【问题讨论】:

  • 您找到解决方法了吗?遇到类似问题

标签: python ftp


【解决方案1】:

如果您在使用标准 FTP 时遇到问题,可以尝试使用专门为处理此类大文件而设计的不同协议。

存在许多合适的solutions。 Rsync 可能是一个很好的开始方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-27
    • 2012-01-28
    • 1970-01-01
    相关资源
    最近更新 更多