2017-03-11 3 views
-1

Encore une fois, je cherche de l'assiatance, merci d'avance. Ce code a le purpouse pour déplacer des fichiers dans une liste, d'un dossier à l'autre. Il me donne l'erreur ci-dessous.Python Boucle pour déplacer des fichiers

import shutil 
Import os 
source='/dev/sdc /mnt/mnttensor/Dhole/' 
destination='/home/ubuntu/classificator/nodhole/' 
fo = open("dhole3.txt", "r") 
content = fo.readlines() 
for files in content: 
    shutil.move(source+files,destination+files) 

erreur

Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
    File "/usr/lib/python2.7/shutil.py", line 302, in move 
    copy2(src, real_dst) 
    File "/usr/lib/python2.7/shutil.py", line 130, in copy2 
    copyfile(src, dst) 
    File "/usr/lib/python2.7/shutil.py", line 82, in copyfile 
    with open(src, 'rb') as fsrc: 
IOError: [Errno 2] No such file or directory: '/dev/sdc /mnt/mnttensor/Dhole/227_5267_M0423_19Oct12-IMAG0068.JPG\r\n' 

Je voudrais vraiment apprécier toute aide à ce sujet.

+0

La 'source' est-elle correcte? Ou est-ce deux «sources» différentes? – pekapa

+0

Vous avez un «espace» dans votre souce. – shizhz

Répondre

0

Regardez le répertoire erroné:

/dev/sdc /mnt/mnttensor/Dhole/227_5267_M0423_19Oct12-IMAG0068.JPG\r\n 

Notez que le \r\n à la fin du fichier. C'est ce qui a vraisemblablement causé l'erreur, et cela devrait être corrigé en utilisant une méthode rstrip() à l'intérieur de la boucle for, de sorte qu'elle tronque les caractères spéciaux lorsque la méthode shutil.move() essaie de trouver les fichiers. Ainsi, la boucle doit ressembler à quelque chose comme ceci:

for files in content: 
    shutil.move(source + files.rstrip("\r\n"), destination + files.rstrip("\r\n")) 

Notez également le caractère des espaces dans le répertoire /dev/sdc - qui est susceptible non intentionnelle et devrait probablement être enlevés.

+2

vous pouvez utiliser '.rstrip ('\ r \ n')' au lieu de '[: -2]' car certaines autres lignes des fichiers peuvent ne pas contenir ces caractères. – pekapa

+0

Bon point. Réponse mise à jour – Jerrybibo

+0

Vous aviez raison ... BIG MERCI – Carlos