[ Foro de Python ]
Que tal, estoy haciendo un script en el cual copie archivos de un FTP a otro.
Ya me funciona el codigo, pero me imprime valores en cuantos bytes a copiado al servidor2, lo que necesito es que al momento de ejecutar el script me aparesca una barra de progreso en porcentaje y que cuando finalize de copiar al servidor2, borre el archivo del servidor1.
Les dejo mi script, para el progressbar estaba utilizando PyQt. Pero si alguien sabe como hacerlo con otro GUI estaria perfecto.
import ftplib
from_ftp = ftplib.FTP("servidor1", "usuario1", "contraseña1")
to_ftp = ftplib.FTP("servidor2", "usuario2", "contraseña2")
to_ftp.cwd("/Respaldos")
to_ftp.retrlines('LIST')
from_Sock = from_ftp.transfercmd("RETR /ISEC/Paulina.zip")
to_Sock = to_ftp.transfercmd('STOR /Respaldos/ISEC/Paulina.zip')
state = 0
while 1:
block = from_Sock.recv(4096)
if len(block) == 0:
break
state += len(block)
while len(block):
print "Transferidos:", state
sentlen = to_Sock.send(block)
block = block[sentlen:]
from_Sock.close()
to_Sock.close()
from_ftp.quit()
to_ftp.quit()
El cualquier "while" que lea o envíe datos podrás añadir la rutina de actualizar la barra de progreso.
También es recomendable que antes compruebes el tamaño, para saber cuántas lecturas o envíos tendrás que hacer, de modo que la barra de progreso muestre una estimación real del progreso final; si no lo haces así, la barra se moverá pero no se podrá estimar cuándo va a terminar.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)