2017-06-27 4 views
1

Ich versuche, alle CSV-Dateien innerhalb eines übergeordneten Ordners und alle Unterordner innerhalb zu einem neuen Ziel ("C:/Projects/CSVFiles ").Kopieren Sie alle CSV-Dateien in einem Verzeichnis von Ordnern in einen Ordner in Python

Ich habe den folgenden Code (von anderswo im Forum) verwendet, aber dies kopiert nur die CSV-Dateien in das übergeordnete Verzeichnis (DataFiles) und nicht aus den Unterordnern in/datafiles /.

Jeder Ratschlag geschätzt. Danke

import glob 
import shutil 
import os 

src_dir = "C:/Projects/DataFiles" 
dst_dir = "C:/Projects/CSVFiles" 
for CSVfile in glob.iglob(os.path.join(src_dir, "*.csv")): 
shutil.copy(Excelfile, dst_dir) 

Antwort

1

Verwenden Sie os.walk, um den Verzeichnisbaum zu durchlaufen.

import os 
import shutil 
src_dir = "C:/Projects/DataFiles" 
dst_dir = "C:/Projects/CSVFiles" 
for root, dirs, files in os.walk(src_dir): 
    for f in files: 
     if f.endswith('.csv'): 
      shutil.copy(os.path.join(root,f), dst_dir) 
1

ab Python 3.5, glob unterstützt the recursive parameter:

glob.iglob(os.path.join(src_dir, "**", "*.csv"), recursive=True) 

In älteren Python-Versionen können Sie os.walk verwenden statt:

import os 

for root, dirs, files in os.walk(src_dir): 
    for filename in files: 
     if not filename.endswith('.csv'): 
      continue 

     filepath = os.path.join(root, filename) 
0

Python 2,2-3,4

import fnmatch 
import os 

src_dir = "C:/Projects/DataFiles" 
dst_dir = "C:/Projects/CSVFiles" 

for root, dirnames, filenames in os.walk(src_dir): 
    for filename in fnmatch.filter(filenames, '*.csv'): 
     shutil.copy(os.path.join(root, filename),dst_dir) 

Ref: Use a Glob() to find files recursively in Python?

Verwandte Themen