2017-06-27 63 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?

相关问题