2017-06-27 62 views
1

我試圖將父文件夾中的所有.csv文件以及其中的所有子文件夾複製到新目標(「C:/ Projects/CSVFiles 「)。將文件夾中的所有.csv文件複製到python中的一個文件夾中

我已經使用了下面的代碼(來自論壇的其他地方),但這隻會將.csv文件複製到父目錄(DataFiles)中,而不是從/ datafiles /中的子文件夾複製。

任何意見讚賞。謝謝

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) 

回答

1

使用os.walk遍歷目錄樹。

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

蟒蛇3.5開始,glob支持the recursive parameter

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

在老的Python版本中,你可以使用os.walk代替:

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?

相關問題