+-
Python ftplib和storbinary
试图了解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 - 乐贴网