游戏客户端发布版本,经常会用到
# 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 输出的增量包路径