1. 程式人生 > >python批量複製並且重新命名檔案

python批量複製並且重新命名檔案

用的是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;