使用python库从FTP获取大文件

2024-09-30 12:18:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从FTP服务器下载一些大文件(每个文件大于30GB)。我正在使用pythonstandardlib中的ftplib,但是有一些缺陷:如果我下载了一个大文件,那么如果文件完成了,我就不能再使用连接了。之后我收到一个EOF错误,所以连接被关闭(由于超时?)对于每个后续文件,我都会得到一个错误421。在

从我读到的,有两个联系。数据和控制通道,其中数据通道似乎工作正常(我可以完全下载文件),但同时控制通道超时。 我还读到ftplib(和其他pythonftp库)不适合大文件,可能只支持大约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()

是否有任何调整,或其他库,我可以使用,它支持巨大的文件?在


Tags: 文件inimport服务器port错误ftptempfile
1条回答
网友
1楼 · 发布于 2024-09-30 12:18:27

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

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

相关问题 更多 >

    热门问题