+-

试图了解ftplib的工作方式.
我正在尝试将文件保存到FTP服务器并实现回调.
该文件说:
FTP.storbinary(command, file[, blocksize, callback, rest])
回调函数在文档中定义:
The callback function is called for
each block of data received, with a
single string argument giving the data
block.
如何实现此回调?在retrbinary上的示例回调(读取文件)可能类似于:
def handle(block):
f.write(block)
print ".",
这将显示文件的下载进度,f为文件对象.
但是我对如何使用storbinary实现这一点感到困惑.
关于如何做到这一点的任何建议?我知道block参数,但是如何通过上传对其进行调整?
更新:
我有一个上传的回调:
def handle(block):
f.read(block)
print ".",
但是正如预期的那样,它给出了错误:
需要一个整数
传递int(block)也不起作用.
最佳答案
如果您的回叫是
def handle(block):
f.write(block)
print ".",
Python具有可以作为参数传递的一流函数-这是回调的关键-您将函数作为参数传递给storbinary调用-
ftp.storbinary(command="stor someFileNameOnServer", file=open("localFile",'rb'), callback=handle,blocksize=1024)
从python文档中,
回调是一个可选的可调用单个参数,它在发送后在每个数据块上调用.
这纯粹是一种后处理方法,例如显示传输状态,在每个数据块发送后调用.每发送1024个字节的数据后,将在上面调用它.
要实现转移状态,类似以下内容-
sizeWritten = 0
totalSize = someMethodToGetTotalBytesInFile()
def handle(block):
global sizeWritten
sizeWritten += 1024
percentComplete = sizeWritten / totalSize
print "%s percent complete" %str(sizeWritten / totalSize)
os.path.getsize将为您提供文件的总大小(以字节为单位).
点击查看更多相关文章
转载注明原文:Python ftplib和storbinary - 乐贴网