两个文件的差异比较

差异化比较

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内容与上方基本一致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值