python批量複製並且重新命名檔案
阿新 • • 發佈:2019-02-14
用的是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;