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)

rconfig.ini

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

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

 

 

你可能感兴趣的:(python)