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