差异化比较
import io
#读取文件
def ReadFile(filename):
f = open(filename,"r")
data = f.readlines() #直接将文件中按行读到list里
bin = 0
datalen = len(data)
dataindex = 0
while(dataindex < datalen):
data[dataindex] = data[dataindex].replace("\n","")
data[dataindex] = data[dataindex].replace("\r","")
dataindex += 1
f.close()
return data
#写入文件
def WriteFile(filename,savadata):
if len(savadata) < 1:
return
f = open(filename,'w')
for d in savadata:
f.write(d);
f.write("\n")
f.close()
#存储过程查找
def ProduceFind(strlines):
lastsqlproduces = []
lastsqlproduces2 = []
for d in strlines:
beginindex = -1
try:
beginindex = d.index("ExecuteProcess(TEXT(")
beginindex += (len("ExecuteProcess(TEXT(")+1)
except:
beginindex = -1
endindex = -1
if beginindex >= 0:
a = d[beginindex:]
try:
endindex = a.index('"')
except:
endindex = -1
if endindex > 0:
a = a[0:endindex]
if a not in lastsqlproduces:
lastsqlproduces.append(a)
else:
lastsqlproduces2.append(a)
lastsqlproduces.sort()
lastsqlproduces2.sort()
return lastsqlproduces,lastsqlproduces2
def ProduceCheck(readfilename,writefilename,sqlserverproc):
filelines = ReadFile(readfilename+".txt")
produces,produces2 = ProduceFind(filelines)
WriteFile(writefilename+".csv",produces)
#WriteFile(writefilename+"other.csv",produces2)
notexitproc = []
for d in produces:
if d not in sqlserverproc:
notexitproc.append(d)
notice = "%s.txt sql len=%s --- sqlserver len=%s --- diff len=%s" % (readfilename,len(produces),len(sqlserverproc),len(notexitproc))
#print (notice)
return notexitproc
#WriteFile(writefilename+"notexit.csv",notexitproc)
if __name__=="__main__":
sqlname = "local_sql"
sqlserverproduces = ReadFile(sqlname+".txt")
#print (sqlserverproduces)
notexitprocs = ProduceCheck("guild","guild",sqlserverproduces)
WriteFile(sqlname + "_guild" + "_notexit.csv",notexitprocs)
notexitprocs2 = ProduceCheck("game","game",sqlserverproduces)
WriteFile(sqlname + "_game" + "_notexit.csv",notexitprocs2)
notexitprocs3 = ProduceCheck("plat","plat",sqlserverproduces)
WriteFile(sqlname + "_plat" + "_notexit.csv",notexitprocs3)
totaldiff = set(notexitprocs+notexitprocs2+notexitprocs3)
WriteFile(sqlname + "_total" + "_notexit.csv",totaldiff)
print ("over")
local_sql.text内容
GSP_GP_AAAAAA
GSP_GP_BBBBBB
game.txt内容
//?áè?áD±í
ExecuteProcess(TEXT(“GSP_GS_AAAAA”),true)!=DB_SUCCESS)
349 {
350 //??è?D??¢
…
424
425 //?áè?áD±í
ExecuteProcess(TEXT(“GSP_GS_BBBBB”),true)!=DB_SUCCESS)
427 {
428 //??è?D??¢
…
491
492 //?′DD?üá?
ExecuteProcess(TEXT(“GSP_GS_CCCCC”),false)!=DB_SUCCESS)
494 {
495 //??è?D??¢
…
582
583 //?′DD?üá?
.ExecuteProcess(TEXT(“GSP_GS_DDDDD”),true)!=DB_SUCCESS)
585 {
586 //??è?D??¢
plat.txt内容与上方基本一致
guild.txt内容与上方基本一致