2016-06-10 22 views
0

Wie kann ich eine definierte Liste von Ordnern und alle einzelnen Dateien in jedem dieser Ordner durchlaufen?Schleife über mehrere Ordner aus der Liste mit glob.glob

Ich versuche, es alle Monate in jedem Jahr Ordner kopieren zu lassen. Aber wenn ich es passiert nichts laufen ..

import shutil 
import glob 


P4_destdir = ('Z:/Source P4') 

yearlist = ['2014','2015','2016'] 

for year in yearlist: 
    for file in glob.glob(r'{0}/*.csv'.format(yearlist)): 
     print (file) 
     shutil.copy2(file,P4_destdir) 
+1

Sie können [ 'os.walk()'] (https://docs.python.org/3.5/library/os.html#os.walk) für diese . –

+0

In welchem ​​Verzeichnis führen Sie Ihr Skript * von * aus? Sind die Verzeichnisse '2014',' 2015' und '2016' in diesem Verzeichnis vorhanden? Wenn nicht, geben Sie sie als absolute Pfade an. – user4815162342

Antwort

1

ich glaube, das Problem könnte sein, dass Sie ein / in Ihnen Quellpfad benötigen:

import shutil 
import glob 


P4_destdir = ('Z:/Source P4/') 

yearlist = ['2014','2015','2016'] # assuming these files are in the same directory as your code. 

for year in yearlist: 
    for file in glob.glob(r'{0}/*.csv'.format(yearlist)): 
     print (file) 
     shutil.copy2(file,P4_destdir) 

Eine andere Sache, die ein Problem sein könnte, ist, wenn das Ziel Datei existiert noch nicht. Sie können es os.mkdir mit erstellen:

import os 

dest = os.path.isdir('Z:/Source P4/') # Tests if file exists 
if not dest: 
    os.mkdir('Z:/Source P4/')