需求:
文件夹“sourceDir_1 ”内包含300多款游戏的图片素材文件夹,每个游戏为一个子文件夹,子文件夹内可能还有子文件夹;
现在需要把“sourceDir_1 ”文件夹下的文件名中所有包含"icon"的图片批量复制到指定文件夹“targetDir_1 ”内。
实现方法:
通过python的os、re两个模块实现批量复制文件名中包含指定字符的文件,到指定文件夹下
import os
import re
#使用Python实现从各个子文件夹中复制指定文件的方法
# 递归复制文件夹内的文件
def CopyFiles(sourceDir, targetDir):
for file in os.listdir(sourceDir):
try:
sourceDir1 = os.path.join(sourceDir, file) # 路径名拼接
targetDir1 = os.path.join(targetDir, file)
print("sourceDir1" + sourceDir1)
print("targetDir1" + targetDir1)
for file in os.listdir(sourceDir1):
sourceDir2 = os.path.join(sourceDir1, file)
print(sourceDir2 + "__sourceDir2")
if re.search('.*(icon).+', file ,re.I):
sourceFile = sourceDir2
print(file)
print("sourceFile__" + sourceFile)
targetFile = os.path.join(targetDir1, file)
print("目标文件路径__" + targetFile)
if os.path.isfile(sourceFile):
if not os.path.exists(targetDir1):
os.makedirs(targetDir1)
print("文件夹已创建")
else:
print("文件夹已存在")
if not os.path.exists(targetFile) or (os.path.exists(targetFile) and (os.path.getsize(targetFile) != os.path.getsize(sourceFile))):
open(targetFile, "wb").write(open(sourceFile, "rb").read())
print(targetFile + " copy succeeded")
else:
print("复制失败")
else:
print("文件不存在")
else:
print("没有找到icon")
except OSError:
pass
continue
print('end')
if __name__ == '__main__':
sourceDir_1 = 'C:\\Users\\Desktop\\sourceDir'
targetDir_1 = 'C:\\Users\\Desktop\\targetDir'
CopyFiles(sourceDir_1, targetDir_1)