Python 输出两个文件夹修改过的文件用于增量更新

游戏客户端发布版本,经常会用到

# coding=gbk
   
import os,configparser
import shutil
import hashlib

'''
获取文件md5码
'''

def get_file_md5(f):
    m = hashlib.md5()
    while True:
        data = f.read(1024)  #将文件分块读取
        if not data:
            break
        m.update(data)
    return m.hexdigest()
'''
递归列出某目录下的文件,放入List中
'''
def listDir (fileList,path):
    files=os.listdir(path)
 
    for i in  files:
        file_path=path+"\\"+i
        if os.path.isfile(file_path):
            fileList.append(file_path)
 
    for i in files:
        file_path=path+"\\"+i
        if os.path.isdir(file_path):
            #fileList.append(file_path)
            listDir(fileList,file_path)
 
    return fileList
 
'''
将List中内容写入文件
'''
def writeListToFile(list,path):
    strs="\n".join(list)
    f=open(path,'wb')
    f.write(strs.encode())
    f.close()
 
 
'''
读入文件内容并放入List中
'''
def readFileToList(path):
    lists=[]
    f=open(path,'rb')
    lines=f.readlines()
    for line in lines:
        lists.append(line.strip())
    f.close()
    return lists
 
 
'''
比较文件--以Set方式
'''
def compList(list1,list2):
    return list(set(list1)-set(list2))
 
def release(sdir,tdir,outdir):
     for parent, dirnames, filenames in os.walk(sdir,followlinks=True):
        for filename in filenames:
            file_path = os.path.join(parent, filename)
            #print('文件名:%s' % filename)
            #print('文件完整路径:%s\n' % file_path)
            xdpath = file_path.replace(sdir,"")
            #print('文件相对路径:%s\n' % xdpath)
            topath = tdir + xdpath
			#文件大小判断
            if not os.path.exists(topath) or (os.path.exists(topath) and os.path.getsize(topath)!=os.path.getsize(file_path)):
			#最近修改时间判断
            #if not os.path.exists(topath) or (os.path.exists(topath) and os.path.getmtime(topath)<os.path.getmtime(file_path)):
                print ("正在复制文件:"+xdpath)
                outfile = outdir+xdpath
                dirpath = os.path.dirname(outfile)
                if not os.path.exists(dirpath):
                    os.makedirs(dirpath)
                shutil.copyfile(file_path,outfile)
if __name__ == '__main__':

	cfFile="rconfig.ini";#配置文件文件名
    #读取配置文件
	if(os.path.exists(cfFile)):
		cf=configparser.ConfigParser()
		cf.read(cfFile)
		sdir=cf.get("main", "sourceDir")
		tdir=cf.get("main","targetDir")
		outdir=cf.get("main","outDir")
		release(sdir,tdir,outdir)
	else:
		print ("配置文件不存在!")
	input("\n按 回车键 退出\n")
	exit()

rconfig.ini

[main]
sourceDir=E:\proj\mir\pf\bin-release\gamerelease
targetDir=E:\proj\pf\client\game
outDir=test/3

sourceDir 为新发布的版本,targetDir 为目前版本,outDir 输出的增量包路径

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值