使用python比較兩個文件夾的文件並更新


import os,shutil
import datetime
#將子文件夾里的文件全部移動出來,去除重復文件(文件名相同,大小相同則跳過)
#revised by Stephen Shen 
#2020-3-8 16:31:07
src='G:\_debug0229'
dst='D:\_debug0229'

 

# oldfile=os.path.getsize(r'G:\_debug0229\111.txt')
# newfile=os.path.getsize(r'd:\_debug0229\111.txt')

 

for folderName,subFolders,fileNames in os.walk(src):
    # print('The current foler is '+folderName)

 

    # for subfolder in subFoldst` s:
        # print('Subfolder of '+folderName+' :'+subfolder)

 

    for filename in fileNames:
        # print('File inside '+folderName+' :'+filename)
        
        srcpath=os.path.join(folderName,filename)
        relpath=os.path.relpath(folderName,src)
        dstpath=os.path.join(dst,relpath,filename)

 

        if os.path.exists(dstpath):
            srcsize=os.path.getsize(srcpath)
            dstsize=os.path.getsize(dstpath)
            if srcsize==dstsize:
                #文件名相同且大小相同
                # print('File inside '+folderName+' :'+filename+' is skipped')
                continue
            else:
                fdirname,fbasename=os.path.split(dstpath)
                #文件名相同但大小不同
                fname,fext=os.path.splitext(fbasename)
                nowtime=datetime.datetime.now()                
                strtime=str(nowtime.year)+str(nowtime.month)+str(nowtime.day)+str(nowtime.hour)+str(nowtime.minute)
                newfbasename=fname+'-'+strtime+fext
                dstpath=os.path.join(fdirname,newfbasename)
                print('File inside '+folderName+' :'+filename+' is renamed')
                shutil.copyfile(srcpath,dstpath)

 

        else:
            shutil.copyfile(srcpath,dstpath)
            print('File inside '+folderName+' :'+filename+' is copied')
        
print('done')







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM