Python的FTPLib太慢了?

3 投票
7 回答
9348 浏览
提问于 2025-04-15 11:27

我最近在玩Python的FTP库,感觉它的速度比在DOS中用脚本文件慢太多了。我需要下载成千上万的数据文件(我现在大概有超过800万个)。我观察到,在Python中下载的过程似乎要比在DOS命令行中慢五到十倍。

因为我不想让别人帮我修代码,所以我没有提供任何代码。我更想知道我的观察是否正确,或者我是否需要调整一些参数。

7 个回答

4

在FTP连接中定义块大小,并使用storbinary,这样你的连接速度会比FTP Filezilla快1.5到3倍哦 :)

from ftplib import FTP

USER = "Your_user_id"
PASS = "Your_password"
PORT = 21
SERVER = 'ftp.billionuploads.com' #use FTP server name here

ftp = FTP()
ftp.connect(SERVER, PORT)
ftp.login(USER, PASS)

try:
    file = open(r'C:\Python27\1.jpg','rb')
    ftp.storbinary('STOR ' + '1.jpg', file,102400) #here we store file in 100kb blocksize
    ftp.quit()
    file.close()
    print "File transfered"
except:
    print "Error in File transfering"
4

速度问题可能出在你的代码上。FTPlib并没有慢到十倍那么夸张。

3

FTPLib是用Python写的,而你提到的“DOS脚本”其实是一个调用已经编译好的命令的脚本。执行这个命令可能比解释Python代码要快。如果你觉得速度不够快,我建议你可以在Python中使用subprocess模块来调用这个DOS命令。

撰写回答