2017-06-27 3 views
1

親フォルダ内のすべての.csvファイルとその内のすべてのサブフォルダを新しいコピー先にコピーしようとしています( "C:/ Projects/CSVFiles ")。フォルダのディレクトリにあるすべての.csvファイルをPython内の1つのフォルダにコピーします

次のコードを(フォーラムの別の場所から)使用しましたが、これは/ datafiles /内のサブフォルダからではなく、親ディレクトリ(DataFiles)の.csvファイルのみをコピーします。

アドバイスありがとうございます。ありがとう

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

のpython 3.5から始まって、globthe 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?

関連する問題