python批量复制并且重命名文件

时间:2022-10-18 12:29:21

用的是python 3.6.0版本,

操作系统是windows10


# -*- coding: gbk -*-
#拷贝文件并且按照规则重命名
#命名规则:给定前缀或者后缀 添加编号
import os
import time
import shutil
import sys
#sourceDir="C:\\Users\\zxl\\Desktop\\图片"






def createTargetDir(sourceDir):
if not os.path.isdir(sourceDir):
print("给定的源文件夹不存在,请检查");
return;

targetDir=sourceDir+'\\test'

if not os.path.isdir(targetDir):
os.mkdir(targetDir)
print('创建目标文件夹为:%s'% targetDir)
else:
print('目标文件夹:%s 已存在,需要删除!'% targetDir)
shutil.rmtree(targetDir,True)
os.mkdir(targetDir)
return targetDir

def copyAndRename(sourceDir,targetDir,rule):
print('-----------批量复制并且重命名start---------------')
fileList=os.listdir(sourceDir)
i=1
print('sourceDir:%s--->targetDir:%s'%(sourceDir,targetDir))
fobj=open(targetDir+'\\test.txt','w')

ruleIndex=rule.rfind(':')
pre=rule[ruleIndex+1:]
suf=rule[ruleIndex+1:]

for f in fileList:
if os.path.isdir(os.path.join(sourceDir,f)):
continue
index=f.rfind('.')
#fileName=f[:index]
fileExt=f[index:]
fileNameWithExt=os.path.basename(f)
sf=os.path.join(sourceDir,f)
newFileName=('%d%s' % (i,fileExt))
if rule.startswith('pre'):
newFileName=('%s-%d%s'%(pre,i,fileExt))
elif rule.startswith('suf'):
newFileName=('%d-%s%s'%(i,suf,fileExt))
tf=os.path.join(targetDir,newFileName)
print('%s -->>%s' % (fileNameWithExt,newFileName))
fobj.writelines('%s -->>%s\n' % (fileNameWithExt,newFileName))
if(os.path.isfile(sf)):
shutil.copyfile(sf, tf)
i+=1
print('-----------批量复制并且重命名end---------------')
def testDomain():

global rule
rule=200
print(rule)


if __name__ == '__main__': #程序运行入口
print('-----------------------zxl----------------------')
while(True):
sd=input('Enter sourceDir:')
print('给定的源文件夹为:%s' % sd)
rule=input('Enter nameRule,eg1:prefix:ls eg2:suffix:ls')
td=createTargetDir(sd)
copyAndRename(sd,td,rule)
input('Enter the any press to exit' )
break;