需求:
文件夾“sourceDir_1 ”內(nèi)包含300多款游戲的圖片素材文件夾,每個(gè)游戲?yàn)橐粋€(gè)子文件夾既穆,子文件夾內(nèi)可能還有子文件夾;
現(xiàn)在需要把“sourceDir_1 ”文件夾下的文件名中所有包含"icon"的圖片批量復(fù)制到指定文件夾“targetDir_1 ”內(nèi)。
實(shí)現(xiàn)方法:
通過python的os、re兩個(gè)模塊實(shí)現(xiàn)批量復(fù)制文件名中包含指定字符的文件弄捕,到指定文件夾下
import os
import re
#使用Python實(shí)現(xiàn)從各個(gè)子文件夾中復(fù)制指定文件的方法
# 遞歸復(fù)制文件夾內(nèi)的文件
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("目標(biāo)文件路徑__" + targetFile)
if os.path.isfile(sourceFile):
if not os.path.exists(targetDir1):
os.makedirs(targetDir1)
print("文件夾已創(chuàng)建")
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("復(fù)制失敗")
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)