我想根据条件从另一个文件夹中的文件夹复制和粘贴csv文件。
主文件夹名称为"main",其中有文件夹,分别为main_1, main_2, main_3,......、main_45。每个文件夹中也有csv文件,分别是a1、b2、c3、d4、e5、........z30。
我只想从文件夹中复制a1.csv, b2.csv和c3.csv并将它们粘贴到另一个空文件夹中。这对我来说太复杂了,但我相信对专家来说很容易。提前感谢
os.walk
遍历目录并以string形式显示所有文件。
遍历main
文件夹,如果文件名以.csv
结尾,则使用shutil.copyfile
函数复制它
import os, shutil
for p, d, f in os.walk("main"):
for fname in f:
if fname.endswith(".csv"):
shutil.copyfile(os.path.join(p, f), os.path.join("ANOTHER EMPTY FOLDER NAME", f))
文档:https://docs.python.org/3/library/os.html
https://docs.python.org/3/library/shutil.html
如果您想要某个文件夹和子文件夹下的所有CSV文件名,一个简单的方法是使用Python的glob.glob()
函数。这样,您可以为CSV文件指定*.csv
,并使其递归到子文件夹:
import glob
for csv_filename in glob.glob(r'C:main***.csv', recursive=True):
print(csv_filename)
如果您只想复制以a1
a3
或c10
开头的CSV文件名,例如,正则表达式可以帮助:
import glob
import os
import shutil
import re
re_abc123 = re.compile('[a-z]d+')
for csv_filename in glob.glob(r'C:main***.csv', recursive=True):
basename = os.path.basename(csv_filename)
if re_abc123.match(basename):
print(csv_filename)
shutil.copyfile(csv_filename, os.path.join('output_folder', basename))