使用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')






posted on 2020-03-19 14:52  风中狂笑  阅读(961)  评论(1编辑  收藏  举报

导航