English 中文(简体)
Python ftplib和storbinary
原标题:Python ftplib and storbinary

试图了解ftplib是如何工作的。

我正在尝试将文件保存到FTP服务器并实现回调。

文件中写道:

FTP.storbinary(command, file[, blocksize, callback, rest])

callback函数的定义如下:

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实现这一点。

关于如何做到这一点,有什么建议吗?我知道参数,但如何在上传时调整它?

更新:

我有一个回调上传为:

def handle(block):
    f.read(block)
    print ".",

但正如预期的那样,它给出了错误:

需要一个整数

传递int(块)也不起作用。

最佳回答

如果您的回拨是

def handle(block):
    f.write(block)
    print ".", 

Python有可以作为params传递的第一类函数-这是回调的点-您可以将函数作为param传递给storbinary调用-

ftp.storbinary(command="stor someFileNameOnServer", file=open("localFile", rb ), callback=handle,blocksize=1024)

根据python文档,

callback是一个可选的可调用的单参数,在发送数据块后对其进行调用。

它纯粹是一种后处理方法,例如显示传输状态,在发送每个数据块后调用它。在上面,它将在发送每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将提供文件的总大小(以字节为单位)。

问题回答

暂无回答




相关问题
Can Django models use MySQL functions?

Is there a way to force Django models to pass a field to a MySQL function every time the model data is read or loaded? To clarify what I mean in SQL, I want the Django model to produce something like ...

An enterprise scheduler for python (like quartz)

I am looking for an enterprise tasks scheduler for python, like quartz is for Java. Requirements: Persistent: if the process restarts or the machine restarts, then all the jobs must stay there and ...

How to remove unique, then duplicate dictionaries in a list?

Given the following list that contains some duplicate and some unique dictionaries, what is the best method to remove unique dictionaries first, then reduce the duplicate dictionaries to single ...

What is suggested seed value to use with random.seed()?

Simple enough question: I m using python random module to generate random integers. I want to know what is the suggested value to use with the random.seed() function? Currently I am letting this ...

How can I make the PyDev editor selectively ignore errors?

I m using PyDev under Eclipse to write some Jython code. I ve got numerous instances where I need to do something like this: import com.work.project.component.client.Interface.ISubInterface as ...

How do I profile `paster serve` s startup time?

Python s paster serve app.ini is taking longer than I would like to be ready for the first request. I know how to profile requests with middleware, but how do I profile the initialization time? I ...

Pragmatically adding give-aways/freebies to an online store

Our business currently has an online store and recently we ve been offering free specials to our customers. Right now, we simply display the special and give the buyer a notice stating we will add the ...

Converting Dictionary to List? [duplicate]

I m trying to convert a Python dictionary into a Python list, in order to perform some calculations. #My dictionary dict = {} dict[ Capital ]="London" dict[ Food ]="Fish&Chips" dict[ 2012 ]="...

热门标签