将文件夹目录中的所有 .csv 文件复制到 python 中的一个文件夹
Copy all .csv files in a directory of folders to one folder in python
我正在尝试将父文件夹及其所有子文件夹中的所有 .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)
使用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)
从python3.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)
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)
参考:Use a Glob() to find files recursively in Python?
我正在尝试将父文件夹及其所有子文件夹中的所有 .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)
使用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)
从python3.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)
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)
参考:Use a Glob() to find files recursively in Python?