Панель загрузки Python FTP - PullRequest
       14

Панель загрузки Python FTP

2 голосов
/ 15 апреля 2011

Я загружаю файл с FTPLib в python и у меня есть панель загрузки cli с progressbar 2.2. Мне нужно сделать панель загрузки, чтобы сообщить о процессе загрузки.

У кого-нибудь есть информация по теме?

Спасибо, giodamelio

<ч />

Как отметил Сентил Кумаран, в функции ftplib.storbinary есть параметр обратного вызова, но я не знаю, как его использовать.

Я попробовал это. Я ожидал, что он будет печатать сообщение каждый раз, когда загружается байт.

import ftplib

def callback():
    print("This is the callback function")

s = ftplib.FTP('myserver.com','login','password') # Connect

f = open('test.txt','rb')                # file to send
s.storbinary('STOR test.txt', f, 1024, callback())         # Send the file

f.close()                                # Close file and FTP
s.quit()

Ответы [ 2 ]

4 голосов
/ 15 апреля 2011

Небольшое изменение в вашем коде:

import ftplib

def callback(p):
    print("This is the callback function")

s = ftplib.FTP('myserver.com','login','password') # Connect

f = open('test.txt','rb')                # file to send
s.storbinary('STOR test.txt', f, 1024, callback)         # Send the file

f.close()                                # Close file and FTP
s.quit()

Обратный вызов необходимо вызвать позже.Если вы вызываете его при передаче в качестве параметра, вместо него передается возвращаемое значение.Так как ваша callback функция не имеет возврата, она передаст None.

2 голосов
/ 15 апреля 2011

На конкретный вопрос, например, показ образца кода того, что вы пытались, было бы полезно ответить. Отображение прогресса с помощью индикатора возможно, когда библиотека FTP предоставляет определенные функции функций callback, и вы используете функцию индикатора прогресса (в данном случае это индикатор прогресса) и присоединяете ее к этому обратному вызову. Глядя на документацию ftplib , есть условия для добавления обратных вызовов к определенным методам, возможно, это будет полезно для вас.

...