2016-08-21 4 views
0

J'ai un problème avec la bibliothèque ftplib lorsque je télécharge des fichiers .gz.Les fichiers sont corrompus après les avoir transférés sur un serveur FTP en utilisant ftplib

Le script fonctionnait avant mais en quelque sorte dans l'une de mes milliers d'éditions, j'ai changé quelque chose qui provoque le transfert de fichiers corrompus. Les fichiers sont transférés avec succès au serveur ftp, cependant, les fichiers utilisés lors du ftp ne s'ouvriront pas car ils sont corrompus.

Les fichiers qui vont être transférés sont sans aucun problème. De plus, si les fichiers ne sont pas compressés, le transfert n'a aucun problème. C'est quelque chose avec la façon dont il se lit. GZ

Quelqu'un peut-il me dire quel est le problème avec le code?

for filename in dir: 

    os.system("gzip %s/%s" % (Path, filename)) 
    time.sleep(5) # Wait up to 4 seconds to compress file 
    zip_filename = filename + '.gz' 

    try: 
     # Connect to the host 
     ftp = ftplib.FTP(host) 
     # Login to the ftp server 
     ftp.login(username, password) 

     # Transfer the file 
     myfile = open(zip_filename, 'rb') 
     ftp.storlines("STOR temp/" + zip_filename, myfile) 
     myfile.close() 

    except ftplib.all_errors as e: 
     print(e) 
+0

BTW, vous ne devriez pas attendre quoi que ce soit après 'gzip'; 'os.system' est synchrone - au moment où il retourne,' gzip' est déjà terminé. –

Répondre

1

Le problème était l'utilisation de storlines. Dans ce cas, doit être utilisé storbinary