python调用cmd ftp命令_python ftplib transfercmd()二进制Mod

在我之前的问题没有答案的情况下。在

我使用multihtreading通过控制套接字保持一个大的FTP传输活动。在

不幸的是,这需要使用ftplib.ftp.transfercmd()(而不是FTP.retrbinary文件(),它不提供显式套接字控制),它以独占方式返回数据套接字,并允许您在不阻塞的情况下发送“NOOP”命令。在

这是一个问题,因为transfercmd(“RETR”…)默认为ASCII模式下的dwonload,这会破坏我试图下载的视频文件。在

我搜索了所有我能找到一个明确的二进制模式命令,但没有用。有什么想法吗?在

这是我的下载代码def downloadFile(filename, folder):

#login

ftp = FTP(myhost,myuser,passw)

ftp.set_debuglevel(2)

sock = ftp.transfercmd('RETR ' + filename)

def background():

f = open(folder + filename, 'wb')

while True:

block = sock.recv(1024*1024)

if not block:

break

f.write(block)

sock.close()

t = threading.Thread(target=background)

t.start()

while t.is_alive():

t.join(60)

ftp.voidcmd('NOOP')

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值