# -*- coding: UTF-8 -*-
from Tkinter import *
import os
#pythonw f:/python/check-UIEditor/chUIEditor.py
top = Tk()
top.title("check if json files had same name with same type")
# 创建框架
frame1st = Frame(top)
frame1st.pack()
frame2st = Frame(top)
frame2st.pack()
frame3st = Frame(top)
frame3st.pack()
# 1、显示检查结果 ——lab
Label(frame1st,text = "结果",fg = "red",font = 50).pack(side = LEFT)
labResult = Label(frame1st,text = "检查结果在这里显示:",width = 100,height = 25,font = 50)
labResult.pack(side = LEFT)
# 2、json文件的路径 ——输入框
Label(frame2st,text = "Json文件目录: ",fg = "red",font = 50).pack(side = LEFT)
entryDir = Entry(frame2st,width = 100,font = 40,bd = 3)
entryDir.pack(side = LEFT)
dirPath = "E:/Client/trunk/samples/MyMainGame/UI配置/idle_UI/Json"
entryDir.insert(0,dirPath)
# 3、json文件名 ——输入框
labJsName = Label(frame3st,text = "Json文件名: ",fg = "red",font = 50).pack(side = LEFT)
entryJsName = Entry(frame3st,width = 100,font = 40,bd = 3)
entryJsName.pack(side = LEFT)
jsFileName = "action_1.json"
entryJsName.insert(0,jsFileName)
# 4、check按钮 ——btn
def getCtrlListsFromJs(goalFile):
ctrlLists = []
strFlags = ('"options"','"classname"','"name"','"ZOrder"')
fileTemp = open(goalFile).readlines()
listTemp = ["classname","name"]
# 判断是格式化文件还是非格式化
fileType = ""
for L in fileTemp:
if L[-1:] == "\n":
fileType = 0
else:
fileType = 1
break
if fileType == 0:
isOption = False
isClass = False
for L in fileTemp:
# 查找option
nStartOp = L.find(strFlags[0])
if nStartOp != -1: isOption = True
# 判断是否是option
if isOption:
# 查找classname
nStartCl = L.find(strFlags[1])
if nStartCl != -1:
# 设置起始位置
nStart = nStartCl + len(strFlags[1]) + len(': "')
nEnd = -1 - len('",')
listTemp[0] = L[nStart:nEnd]
isOption = False
isClass = True
if isClass:
# 查找name
nStartNm = L.find(strFlags[2])
if nStartNm != -1:
# 设置起始位置
nStart = nStartNm + len(strFlags[2]) + len(': "')
nEnd = -1 - len('",')
listTemp[1] = L[nStart:nEnd]
ctrlLists.append(listTemp)
isClass = False
listTemp = ["classname","name"]
else:
for L in fileTemp:
nStartZO = 0
while True:
# 查找option
nStartOp = L.find(strFlags[0],nStartZO)
if nStartOp != -1:
# 查找classname
nStartCl = L.find(strFlags[1],nStartOp)
nStart = nStartCl + len(strFlags[1]) + len(':"')
# 查找name
nStartNm = L.find(strFlags[2],nStartCl)
nEnd = nStartNm - len('",')
listTemp[0] = L[nStart:nEnd]
nStart = nStartNm + len(strFlags[2]) + len(':"')
# 查找ZOrder
nStartZO = L.find(strFlags[3],nStartNm)
nEnd = nStartZO - len('",')
listTemp[1] = L[nStart:nEnd]
ctrlLists.append(listTemp)
listTemp = ["classname","name"]
else:
break
return ctrlLists
def supCmp(idx,ctrlLists):
curClassName = ctrlLists[idx][0]
curName = ctrlLists[idx][1]
for i in range(0,len(ctrlLists) - 1):
if i > idx:
className = ctrlLists[i][0]
isSame = cmp(curClassName,className)
if isSame == 0:
name = ctrlLists[i][1]
isSame = cmp(curName,name)
if isSame == 0: return 0,ctrlLists[idx]
return -1,"not same"
def check(ctrlLists):
sameLists = []
for i in range(0,len(ctrlLists) - 1):
isSame,ctrl = supCmp(i,ctrlLists)
if isSame == 0:
sameLists.append(ctrl[1])
nLen = len(sameLists)
if nLen > 0:
return 0,sameLists
else:
return -1,"not same"
textFile = "log.txt"
def checkEvent():
curDir = os.getcwd()
os.chdir(curDir)
# 清空原log
# open(textFile,"w").write("")
dirName = entryDir.get()
isDir = os.path.isdir(dirName)
if isDir:
name = entryJsName.get()
if len(name) > 0:
fileName = os.path.join(dirName,name)
isFile = os.path.isfile(fileName)
if isFile:
ctrlLists = getCtrlListsFromJs(fileName)
isSame,sameLists = check(ctrlLists)
showText = ""
if isSame == 0:
showText = 'you are stupid,there are same name:"' + ",".join(sameLists) + '"'
else:
showText = "you are great,no error!"
labResult["text"] = showText
else:
labResult["text"] = "无效的文件"
else:
open(textFile,"a").write("\n")
files = os.listdir(dirName)
isSames = -1
nLine = 0
for name in files:
if name[-5:] == ".json":
fileName = os.path.join(dirName,name)
ctrlLists = getCtrlListsFromJs(fileName)
isSame,sameLists = check(ctrlLists)
if isSame == 0:
nLine += 1
strTemp = str(nLine) + "\t" + name + "\t" + ",".join(sameLists) + "\n"
open(textFile,"a").write(strTemp)
if isSames == -1:
isSames = 0
showText = ""
if isSames == 0:
showText = "there are some wrong,read " + textFile + "!"
else:
showText = "you are great,no error!"
labResult["text"] = showText
else:
labResult["text"] = "无效的目录"
btnCheck = Button(top,command = checkEvent,text = "检\t查",fg = "purple",font = 80)
btnCheck.pack()
top.mainloop()
from Tkinter import *
import os
#pythonw f:/python/check-UIEditor/chUIEditor.py
top = Tk()
top.title("check if json files had same name with same type")
# 创建框架
frame1st = Frame(top)
frame1st.pack()
frame2st = Frame(top)
frame2st.pack()
frame3st = Frame(top)
frame3st.pack()
# 1、显示检查结果 ——lab
Label(frame1st,text = "结果",fg = "red",font = 50).pack(side = LEFT)
labResult = Label(frame1st,text = "检查结果在这里显示:",width = 100,height = 25,font = 50)
labResult.pack(side = LEFT)
# 2、json文件的路径 ——输入框
Label(frame2st,text = "Json文件目录: ",fg = "red",font = 50).pack(side = LEFT)
entryDir = Entry(frame2st,width = 100,font = 40,bd = 3)
entryDir.pack(side = LEFT)
dirPath = "E:/Client/trunk/samples/MyMainGame/UI配置/idle_UI/Json"
entryDir.insert(0,dirPath)
# 3、json文件名 ——输入框
labJsName = Label(frame3st,text = "Json文件名: ",fg = "red",font = 50).pack(side = LEFT)
entryJsName = Entry(frame3st,width = 100,font = 40,bd = 3)
entryJsName.pack(side = LEFT)
jsFileName = "action_1.json"
entryJsName.insert(0,jsFileName)
# 4、check按钮 ——btn
def getCtrlListsFromJs(goalFile):
ctrlLists = []
strFlags = ('"options"','"classname"','"name"','"ZOrder"')
fileTemp = open(goalFile).readlines()
listTemp = ["classname","name"]
# 判断是格式化文件还是非格式化
fileType = ""
for L in fileTemp:
if L[-1:] == "\n":
fileType = 0
else:
fileType = 1
break
if fileType == 0:
isOption = False
isClass = False
for L in fileTemp:
# 查找option
nStartOp = L.find(strFlags[0])
if nStartOp != -1: isOption = True
# 判断是否是option
if isOption:
# 查找classname
nStartCl = L.find(strFlags[1])
if nStartCl != -1:
# 设置起始位置
nStart = nStartCl + len(strFlags[1]) + len(': "')
nEnd = -1 - len('",')
listTemp[0] = L[nStart:nEnd]
isOption = False
isClass = True
if isClass:
# 查找name
nStartNm = L.find(strFlags[2])
if nStartNm != -1:
# 设置起始位置
nStart = nStartNm + len(strFlags[2]) + len(': "')
nEnd = -1 - len('",')
listTemp[1] = L[nStart:nEnd]
ctrlLists.append(listTemp)
isClass = False
listTemp = ["classname","name"]
else:
for L in fileTemp:
nStartZO = 0
while True:
# 查找option
nStartOp = L.find(strFlags[0],nStartZO)
if nStartOp != -1:
# 查找classname
nStartCl = L.find(strFlags[1],nStartOp)
nStart = nStartCl + len(strFlags[1]) + len(':"')
# 查找name
nStartNm = L.find(strFlags[2],nStartCl)
nEnd = nStartNm - len('",')
listTemp[0] = L[nStart:nEnd]
nStart = nStartNm + len(strFlags[2]) + len(':"')
# 查找ZOrder
nStartZO = L.find(strFlags[3],nStartNm)
nEnd = nStartZO - len('",')
listTemp[1] = L[nStart:nEnd]
ctrlLists.append(listTemp)
listTemp = ["classname","name"]
else:
break
return ctrlLists
def supCmp(idx,ctrlLists):
curClassName = ctrlLists[idx][0]
curName = ctrlLists[idx][1]
for i in range(0,len(ctrlLists) - 1):
if i > idx:
className = ctrlLists[i][0]
isSame = cmp(curClassName,className)
if isSame == 0:
name = ctrlLists[i][1]
isSame = cmp(curName,name)
if isSame == 0: return 0,ctrlLists[idx]
return -1,"not same"
def check(ctrlLists):
sameLists = []
for i in range(0,len(ctrlLists) - 1):
isSame,ctrl = supCmp(i,ctrlLists)
if isSame == 0:
sameLists.append(ctrl[1])
nLen = len(sameLists)
if nLen > 0:
return 0,sameLists
else:
return -1,"not same"
textFile = "log.txt"
def checkEvent():
curDir = os.getcwd()
os.chdir(curDir)
# 清空原log
# open(textFile,"w").write("")
dirName = entryDir.get()
isDir = os.path.isdir(dirName)
if isDir:
name = entryJsName.get()
if len(name) > 0:
fileName = os.path.join(dirName,name)
isFile = os.path.isfile(fileName)
if isFile:
ctrlLists = getCtrlListsFromJs(fileName)
isSame,sameLists = check(ctrlLists)
showText = ""
if isSame == 0:
showText = 'you are stupid,there are same name:"' + ",".join(sameLists) + '"'
else:
showText = "you are great,no error!"
labResult["text"] = showText
else:
labResult["text"] = "无效的文件"
else:
open(textFile,"a").write("\n")
files = os.listdir(dirName)
isSames = -1
nLine = 0
for name in files:
if name[-5:] == ".json":
fileName = os.path.join(dirName,name)
ctrlLists = getCtrlListsFromJs(fileName)
isSame,sameLists = check(ctrlLists)
if isSame == 0:
nLine += 1
strTemp = str(nLine) + "\t" + name + "\t" + ",".join(sameLists) + "\n"
open(textFile,"a").write(strTemp)
if isSames == -1:
isSames = 0
showText = ""
if isSames == 0:
showText = "there are some wrong,read " + textFile + "!"
else:
showText = "you are great,no error!"
labResult["text"] = showText
else:
labResult["text"] = "无效的目录"
btnCheck = Button(top,command = checkEvent,text = "检\t查",fg = "purple",font = 80)
btnCheck.pack()
top.mainloop()