#python #file-upload #ftp
#python #загрузка файла #ftp
Вопрос:
Я загружаю файл с помощью FTPLib на python, и у меня есть панель загрузки cli с progressbar 2.2. Мне нужно создать панель загрузки, чтобы сообщать о ходе загрузки.
У кого-нибудь есть какая-либо информация по теме?
Спасибо, Джодамелио
Как указал Сентхил Кумаран, в функции 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()
Комментарии:
1. Не вызывайте свой обратный вызов — на самом деле вы не передаете None в качестве обратного вызова здесь.
2. Я никогда раньше не использовал функцию обратного вызова, поэтому я немного сбит с толку. Какую часть я должен изменить?
Ответ №1:
Небольшое изменение в вашем коде:
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
.
Комментарии:
1. Кстати,
ftplib.storbinary
функция передает каждый блок данных обратно функции обратного вызова, так что это должно было бытьdef callback(param1):
Ответ №2:
Было бы полезно ответить на конкретный вопрос, например, показать пример кода того, что вы пробовали. Отображение прогресса с помощью индикатора возможно, когда библиотека FTP предоставляет определенные возможности callback
функций, и вы используете свою функцию индикатора прогресса (которая в данном случае является progressbar) и подключаете ее к этому обратному вызову. Просматривая документацию по ftplib, можно найти положения о присоединении обратных вызовов к определенным методам, возможно, это должно быть полезно для вас.
Комментарии:
1. черт возьми… должно быть, устал. Я искал там функцию обратного вызова и почему-то пропустил ее. Утром будет предоставлен обновленный код.