Форум сайта python.su
0
Реализовал на данный момент только процесс загрузки с SFTP.
Как создать полосу загрузки файла ?
# SFTP тестовый и доступен всем пользователям интернет #Host SFTP сервера host = "test.rebex.net" #Port SFTP сервера port = 22 #Имя пользователя для подключения к SFTP серверу username = "demo" #Пароль для подключения к SFTP серверу password = "password" ####################################################################################################################### import paramiko def sftp_connect(host,username,password,chdir_sftp,sftp_get_file,put_file_from_sftp_to_folder): #Включаем логи paramiko.util.log_to_file('D:\\Lessons_Python\\Рaramiko\\paramiko.log') #Используем функцию для соединения по SSH ssh = paramiko.SSHClient() #Получаем ключ для подключения по SSH ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #Устанавливаем соединение с sftp #Используя host ,username, password sftp_connect = ssh.connect(host, username=username,password=password) #Открываем соединение с SFTP sftp=ssh.open_sftp() #Переходим в каталог на SFTP #Пример функции sftp.chdir('/pub/example') sftp.chdir(chdir_sftp) #Выгружаем файлы sftp.get(sftp_get_file,put_file_from_sftp_to_folder+sftp_get_file) #Закрыть соединение ssh.close() put_the_file_in_a_folder="D:\\Lessons_Python\\Рaramiko" chdir_sftp='/pub/example' sftp_get_file= "ConsoleClientSmall.png" sftp_connect(host,username,password,chdir_sftp,sftp_get_file,put_the_file_in_a_folder)
Офлайн
294
посмотрите тут https://stackoverflow.com/questions/24278146/how-do-i-monitor-the-progress-of-a-file-transfer-through-pysftp
вроде как ваш случай.
[code python][/code]
Офлайн
0
Решил частично , хотелось бы иметь полосу загрузки типа
( filename: 3.4MiB/s | 40%<#########=============> | 0:03:54 remaining )
#Host SFTP сервера host = "test.rebex.net" #Port SFTP сервера port = 22 #Имя пользователя для подключения к SFTP серверу username = "demo" #Пароль для подключения к SFTP серверу password = "password" ############################################################################################################################################################################# import paramiko #Рализуем полосу загрузки progressDict={} progressEveryPercent=10 for i in range(0,101): if i%progressEveryPercent==0: progressDict[str(i)]="" def printProgressDecimal(x,y): if int(100*(int(x)/int(y))) % progressEveryPercent ==0 and progressDict[str(int(100*(int(x)/int(y))))]=="": print("Файл загружен на {}% (Передано данных в байтах {} / {} общий размер файлав байтах)".format(str("%.2f" %(100*(int(x)/int(y)))),x,y)) progressDict[str(int(100*(int(x)/int(y))))]="1" ############################################################################################################################################################################# def sftp_connect(host,username,password,chdir_sftp,sftp_get_file,put_file_from_sftp_to_folder): #Включаем логи paramiko.util.log_to_file('D:\\Рaramiko\\paramiko.log') #Используем функцию для соединения по SSH ssh = paramiko.SSHClient() #Получаем ключ для подключения по SSH ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) #Устанавливаем соединение с sftp #Используя host ,username, password sftp_connect = ssh.connect(host, username=username,password=password) #Открываем соединение с SFTP sftp=ssh.open_sftp() #Переходим в каталог на SFTP #Пример функции sftp.chdir('/pub/example') sftp.chdir(chdir_sftp) #Выгружаем файлы #Пример функции #sftp.get("ConsoleClient.png","D:\\Рaramiko\\ConsoleClient.png") #sftp.get(sftp_get_file,put_file_from_sftp_to_folder+sftp_get_file) sftp.get(sftp_get_file,localpath=put_file_from_sftp_to_folder+sftp_get_file, callback=lambda x,y: printProgressDecimal(x,y)) #Закрыть соединение ssh.close() put_the_file_in_a_folder="D:\\Рaramiko" chdir_sftp='/pub/example' sftp_get_file= "ConsoleClientSmall.png" sftp_connect(host,username,password,chdir_sftp,sftp_get_file,put_the_file_in_a_folder)
Офлайн
294
VIRTOKвам нужно всего лишь написать нормальную калбэк функцию вместо “lambda x,y: printProgressDecimal(x,y)” которая будет отрисовывать вам то что вы хотите и как вы хотите .
Решил частично , хотелось бы иметь полосу загрузки типа( filename: 3.4MiB/s | 40%<#########=============> | 0:03:54 remaining )
[code python][/code]
Отредактировано PEHDOM (Май 3, 2019 10:08:52)
Офлайн