3
我需要從FTP服務器下載一些大文件(每個文件大於30GB)。我使用python standardlib中的ftplib,但有一些缺陷:如果我下載了一個大文件,如果文件結束,我不能再使用該連接。之後我得到一個EOF錯誤,所以連接被關閉(由於超時?),並且對於每個後續文件,我將得到一個錯誤421.使用python lib從FTP獲取大文件
從我讀到的,有兩個連接。數據和控制通道,數據通道似乎正常工作(我可以完全下載文件),但控制通道在此期間超時。 我也讀過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()
有什麼好辦法給它或另一個庫,我可以使用,它不支持大文件?