2017-03-12 1 views
0

Essaye de déplacer des dossiers d'un dossier au bureau en Python. Mais j'ai une erreur. Ci-dessous mon code et erreur:J'essaie de déplacer des fichiers d'un dossier vers le bureau en Python. Mais j'obtiens l'erreur

import shutil 
import os 
source_dir = 'C:\Users\dupakunt\Desktop\Testdir' 
os.makedirs(source_dir) 
os.chdir(source_dir) 
open("newfile1.txt", "w") 
open("newfile2.txt", "w") 
target = 'C:\Users\dupakunt\Desktop' 
dir_list = os.listdir(source_dir) 
for x in source_dir: 
    print x 
    shutil.move(x,target) 

Erreur:

Traceback (most recent call last): 
    File "cleanup-undo.py", line 12, in <module> 
    shutil.move(x,target) 
    File "C:\Python27\lib\shutil.py", line 302, in move 
    copy2(src, real_dst) 
    File "C:\Python27\lib\shutil.py", line 130, in copy2 
    copyfile(src, dst) 
    File "C:\Python27\lib\shutil.py", line 82, in copyfile 
    with open(src, 'rb') as fsrc: 
IOError: [Errno 2] No such file or directory: 'C'. 

Répondre

0

source_dir est le nom du répertoire, vous voulez exécuter à travers les dir_list fichiers dans le répertoire. Il y a quelques autres éléments à traiter

  • Les barres obliques inverses sont utilisées pour échapper les caractères non imprimables dans les chaînes. Utilisez des chaînes brutes si vous voulez qu'elles soient des séparateurs de chemins, ou utilisez des séparateurs / qui fonctionnent sur Linux et Windows en python.
  • Sa source de confusion pour mélanger chdir et chemins absolus. Je recommande d'éviter chdir lorsque cela est possible et d'utiliser simplement os.path.join pour rendre les chemins relatifs absolus.
  • utiliser les clauses with. Votre code fonctionne avec cpython, mais avec certaines autres variantes, les fichiers peuvent encore être ouverts après la fin du open.
  • Lors de l'énumération du répertoire, supprimez les sous-répertoires.

Exemple

import shutil 
import os 
source_dir = r'C:\Users\dupakunt\Desktop\Testdir' 
os.makedirs(source_dir) 
with open(os.path.join(source_dir, "newfile1.txt"), "w"): 
    pass 
with open(os.path.join(source_dir, "newfile2.txt"), "w"): 
    pass 
target = r'C:\Users\dupakunt\Desktop' 
dir_list = os.listdir(source_dir) 
for x in dir_list: 
    if os.path.isfile(x): 
     x = os.path.join(target, x) 
     print x 
     shutil.move(x,target) 
+0

Salut. Le code modifié ne montre aucune erreur. Mais, ce n'est pas déplacer les fichiers du répertoire vers le bureau. Ma version python est 2.7 et je l'utilise sous Windows 7. –

+0

mon mauvais ... j'ai oublié de construire le chemin de destination. – tdelaney

+0

c'est pareil. Pas d'erreurs, mais ce n'est pas déplacer les fichiers sur le bureau du dossier Testdir –