import os,re,shutil
# 如果findall()方法查找,必须用下面表格式,如果是r'\w+(\.jpg|\.png|\.pdf)'格式将报错。
fileRe = re.compile(r'\w+\.jpg|\w+\.png|\w+\.pdf')
souDir = r'd:\bcd'
desDir = r'c:\bbc'
if not os.path.exists(desDir): # 目标文件夹不存在,就创建
os.mkdir(r'c:\bbc')
# 直接在遍历目录树循环的同时挨个将正则匹配出的特定文件,copy至目标文件夹中
for root,dirs,files in os.walk(souDir):
for filename in files:
if fileRe.search(filename) != None: # 正则匹配返回none就continue
shutil.copy(os.path.join(root,filename),desDir)
continue
--------------------------------------------------------------------------------
# 通过正则表达式查找特定文件后,以列表方式存储文件绝对路径,再遍历列表copy列表中的文件
desFileList = []
for root,dirs,files in os.walk(souDir):
for filename in files:
if fileRe.search(filename) != None:
desFileList.append(os.path.join(root,filename))
continue
for i in desFileList:
shutil.copy(i,desDir)
--------------------------------------------------------------------------------
# 重复工作首选方式
# 通过函数方式实现:
def copyFile(souDir,desDir,fileRe):
'''souDir 要查找的目录;
desDir 保存找到特定文件的目录;
fileRe 要查找文件的正则表达式定义
'''
fileRe = re.compile(fileRe)
if not os.path.exists(desDir): # 目标文件夹不存在,就创建
os.mkdir(desDir)
# 直接在遍历目录树循环的同时挨个将正则匹配出的特定文件,copy至目标文件夹中
for root,dirs,files in os.walk(souDir):
for filename in files:
if fileRe.search(filename) != None: # 正则匹配返回none就continue
shutil.copy(os.path.join(root,filename),desDir)
continue
# 函数调用
copyFile(r'd:\bcd',r'c:\bbc',r'\w+\.jpg|\w+\.png|\w+\.pdf')
编程快速上手 第9章 选择性拷贝
最新推荐文章于 2024-04-30 19:24:04 发布