2016-06-29 4 views
0

J'utilise shutil pour copier la sortie d'un processus en amont basé sur les fichiers fournis par l'utilisateur. Parfois, ces fichiers ne sont pas compatibles avec le processus en amont, et en tant que tel, le fichier final que je tente de déplacer ne sera pas créé. Je donne à shutil une liste de chemins de fichiers verbeux, je veux qu'il continue à déplacer tous les éléments de la liste même quand un ou plusieurs des fichiers sources sont manquants.Force la copie shutil pour continuer dans la liste lors de la rencontre du fichier source manquant

source = ['/home/Desktop/folder/subfolder/file.ext', '/home/Desktop/folder/subfolder2/file2.ext', '/home/Desktop/folder/subfolder3/file3.ext'] 
dest = ['/home/Desktop/target/file.ext','/home/Desktop/target/file2.ext', '/home/Desktop/target/file3.ext'] 
for sou, des in zip(source, dest): 
    shutil.copyfile(sou, des) 
+0

Ne serait pas un ' essayez: shutil.copyfile (sou, des); sauf: ... 'être assez? –

Répondre

0

Une approche serait d'ajouter simplement la gestion des exceptions dans l'appel, par exemple:

import shutil 

source = ['/home/Desktop/folder/subfolder/file.ext', '/home/Desktop/folder/subfolder2/file2.ext', '/home/Desktop/folder/subfolder3/file3.ext'] 
dest = ['/home/Desktop/target/file.ext','/home/Desktop/target/file2.ext', '/home/Desktop/target/file3.ext'] 

for sou, des in zip(source, dest): 
    try: 
     shutil.copyfile(sou, des) 
    except IOError as e: 
     print e 

Ceci afficherait les éléments suivants pour les fichiers manquants:

[Errno 2] No such file or directory: '/home/Desktop/folder/subfolder/file.ext' 
[Errno 2] No such file or directory: '/home/Desktop/folder/subfolder2/file2.ext' 
[Errno 2] No such file or directory: '/home/Desktop/folder/subfolder3/file3.ext'