Estoy usando Python para descargar archivos desde un servidor FTP y soy capaz de descargar los archivos, pero cuando abro los archivos que parecen ser dañado o no se abren archivos como canciones o archivos JPG están bien, pero los documentos de trabajo, hojas de Excel, PDF y archivos de texto no se descarga correctamente.
Lo que sigue es mi código:
from ftplib import FTP
ftp = FTP()
ftp.connect(ip_address,port)
ftp.login(userid,password)
direc='directory path'
ftp.cwd(direc)
doc='doc.txt' or xlsx or pdf or jpg etc
download_path='path to download file on desktop'
file=open(download_path+ doc,'wb')
ftp.retrbinary(f"RETR {doc}", file.write)
Soy capaz de descargar los archivos necesarios, pero la mayoría de ellos son neing dañado. ¿Qué cambios debería hacer para hacer que el código.
no se puede probar FTP en el momento pero lo que veo es un problema con la apertura de su archivo y no se cierre.
Opción A:
file=open(download_path + doc,'wb') # add '+' to append instead of overwriting
...
...
file.close()
Opción B (gestor de contexto, útil ya que cierra el archivo como termine arriba):
with open(download_path + doc,'wb') as file:
file.write(*args, **kwargs)
En cuanto al uso de módulo ftplib
, una excelente respuesta en la siguiente post ftp.retrbinary () ayuda pitón por steveha .
En cuanto a la apertura y escribir en un archivo usando gestor de contexto, consulte Cómo abrir un archivo utilizando el abierto con la declaración , y el manejo de excepciones (Python 3 documentación) , citado por sir-snoopalot
Compruebe también la ftplib
documentación del módulo para más aclaraciones.
Espero que esto ayude.