我正在尝试将父文件夹中的所有.csv文件及其中的所有子文件夹复制到新目标(" C:/ Projects / CSVFiles")。
我使用了以下代码(来自论坛的其他地方),但这只复制了父目录(DataFiles)中的.csv文件,而不是/ 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)
答案 0 :(得分: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 :(得分:1)
从python 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)
答案 2 :(得分: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)