Pregunta

He escrito algo de código Python para descargar una imagen utilizando

urllib.urlopen().read()

y luego subirlo a un sitio FTP utilizando

ftplib.FTP().storbinary()

pero estoy teniendo un problema. A veces, el archivo de imagen se carga sólo parcialmente, por lo que obtener imágenes con la parte inferior del 20% o por lo corté. He comprobado la versión descargada a nivel local y he descargado con éxito toda la imagen, lo que me lleva a pensar que se trata de un problema con storbinary. Creo que estoy abriendo y cerrando todos los archivos correctamente. ¿Alguien tiene alguna pista sobre por qué estoy recibiendo una carga parcial con storbinary?

Actualización: Cuando ejecuto a través de los comandos de la terminal de Python, la carga se realiza correctamente, no sé por qué sería diferente de cuando se ejecuta como un script ...

¿Fue útil?

Solución 2

Ha sido un tiempo desde que miraba este código, pero recuerdo el quid de la cuestión era que no estaba cerrando el archivo descargado correctamente. Tengo el código de trabajo, sin embargo, por lo que sólo en caso de que había un problema con la carga y la descarga no, aquí están los dos fragmentos:

Este es el código de trabajo para descargar la imagen:

socket = urllib.urlopen(TheURL)
FileContents = socket.read()
LocalFilename = LocalDir + FilenameOnly
LocalFile = open(LocalDir + FilenameOnly, 'wb')
LocalFile.write(FileContents)
LocalFile.close()

Cuando TheURL es la dirección URL del archivo que estoy tratando de descargar FilenameOnly, es sólo la parte de nombre de archivo de la ruta, y LocalDir es el destino local. Creo que mi problema era que no estaba llamando LocalFile.close().

Este es el código de trabajo para subir la imagen:

FTPServer = ftplib.FTP(FTPServer, FTPUsername, FTPPassword)
UploadFile = open(Filename, "rb")
FTPServer.cwd(FTPSubDirectory)

UploadFile.close()
FTPServer.quit()

El problema también podría haber sido que no estaba llamando FTPServer.quit()

Si alguien tiene alguna pregunta sobre este código, con mucho gusto voy a responder en los comentarios; Me siento muy mal que dejé ningún Googlers colgando!

Otros consejos

Resulta que yo no estaba cerrando el archivo descargado correctamente. Vamos todos a pretender que esto nunca ocurrió.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top