2016-02-18 1 views
0

J'essaie d'utiliser shutil.copytree pour copier un répertoire sur plusieurs autres répertoires. Je n'arrive pas à le faire marcher. Je suis assez sûr que j'ai juste besoin de mettre en œuvre ignore_errors=True, mais je ne peux pas le faire fonctionner. Comment dois-je aller sur la mise en œuvre 'ignore_errors = True' dansCopie de fichiers dans plusieurs répertoires à l'aide de Python Shutil

for CopyHere in DeleteThis: 
    for CopyThis in FilestoCopy: 
     shutil.copytree(CopyThis, CopyHere) 
     print('Files have been copied') 

Mon code est le suivant:

import shutil 
import time 


DeleteThis = ['E:', 'F:'] 
FilestoCopy = ['C:\\Users\\2402neha\\Desktop\\Hehe'] 


for Directory_to_delete in DeleteThis: 
    shutil.rmtree(Directory_to_delete, ignore_errors=True) 
    print('Directories have been wiped') 
    time.sleep(2) 


for CopyHere in DeleteThis: 
    for CopyThis in FilestoCopy: 
     shutil.copytree(CopyThis, CopyHere) 
     print('Files have been copied') 

Voici les messages d'erreur que je reçois:

Traceback (most recent call last): 
    File "C:\Users\2402neha\OneDrive\Python\Dis Cleaner\Copy paste test.py", line 17, in <module> 
    shutil.copytree(CopyThis, CopyHere) 
    File "C:\Users\2402neha\AppData\Local\Programs\Python\Python35\lib\shutil.py", line 309, in copytree 
    os.makedirs(dst) 
    File "C:\Users\2402neha\AppData\Local\Programs\Python\Python35\lib\os.py", line 241, in makedirs 
    mkdir(name, mode) 
PermissionError: [WinError 5] Ingen tilgang: 'E:' 
+4

Voyez-vous des messages d'erreur? parce que "je ne peux pas le faire fonctionner" ne dit pas beaucoup .. – Alexander

+0

Juste à noter, 'CamelCase' en Python est habituellement utilisé uniquement pour les noms de classes. Vous verrez plus souvent 'copy_this' ou' copythis' pour les fonctions et les noms. –

Répondre

0

Votre destination est E:

Le répertoire de destination ne doit pas exister.

De la documentation shutil.copytree:

shutil.copytree(src, dst, symlinks=False, ignore=None)
copie récursive un arborescence de répertoires racine à src. Le répertoire de destination, nommé par dst, ne doit pas déjà exister; il sera créé ainsi que les répertoires parents manquants.

Vous voulez sans doute le nom du répertoire que vous copiez et de le joindre à la destination:

directory = os.path.basename(CopyThis) 
destination = os.path.join(CopyHere, directory) 
shutil.copytree(CopyThis, destination)