python指令碼處理程式碼註釋規範化
阿新 • • 發佈:2019-02-05
python指令碼 實現註釋的規範化處理:
示例:
1.
原始碼:
int speed = 4;//設定速度為4
處理後:
//設定速度為4
int speed = 4;
2.
原始碼:
else{//否則
處理後:
//否則
else{
3.
原始碼:
}else{//否則
處理後:
//否則
}else{
4.
原始碼:
if(condition == true){//如果為真
處理後:
//如果為真
if(condition == true){
5.
原始碼:
json處理:(js)
var testJson = {
name:”lmn”,//名字
age:”25”//年齡
}
處理後:
不進行處理。
說多無益,直接上程式碼:
#encoding:utf-8 ''' 可能性如下: 1.單獨一行註釋: 2.有程式碼有註釋 3 }else{// 4.多行註釋 /** * //獲取所有配件重量總和 * @param index 將要裝備的第幾個配件槽 * @param unitId 將要裝備配件ID */ 5. 1: "tankmuzzle",//炮管 11 滿足要求: 所有的註釋都單獨一行,除了JSON的註釋 保持與下一行同樣縮排 ''' import os #檔案列表 fileList = [] writeFileList = [] #程式碼註釋格式宣告 codeAnnotationDec = '//' # str:將要處理的code saveList:將要存入的列表 def dealCodeWithSpace(lines,willSaveList): # lines=lines.strip('\n') #計算程式碼首部縮排空格長度 去掉尾部空格長度 - 去掉首尾空格長度 headSpaceLen = len(lines.rstrip())-len(lines.strip()) #先添加註釋(註釋程式碼+首部縮排) # willSaveList.append(" "*headSpaceLen+lines[lines.find(codeAnnotationDec):len(lines)]) tempAnno = lines[lines.find(codeAnnotationDec): ].rstrip() if tempAnno.find('\n')>-1: willSaveList.append(" "*headSpaceLen+tempAnno) else: willSaveList.append(" "*headSpaceLen+tempAnno+'\n') willSaveList.append('\n') if len(willSaveList)>=2: if willSaveList[len(willSaveList) -1] == '\n' and willSaveList[len(willSaveList) -2].find(codeAnnotationDec)>-1: willSaveList.pop() #再新增程式碼: tempCode = lines[0:lines.find(codeAnnotationDec)] if tempCode.find('\n')>-1: willSaveList.append(tempCode) else: willSaveList.append(tempCode) willSaveList.append('\n') # willSaveList.append(lines[0:lines.find(codeAnnotationDec)].rstrip()+'\n') def doDealCode(readFilePath,writeFile): #如果傳遞進來的是檔案,就直接加入處理檔案列表 if os.path.isfile(readFilePath): fileList.append(dir.decode("utf-8")) writeFileList.append(dir.decode("utf-8")) #把讀取目錄的所有檔案加入檔案列表 elif os.path.isdir(readFilePath): for singleFile in os.listdir(readFilePath): fileList.append(os.path.join(readFilePath,singleFile)) writeFileList.append(os.path.join(writeFile,singleFile)) if 1: fileIndex = 0 for readSingleFile in fileList: #處理後的程式碼行,每行都會插入列表中 willSaveList =[] fileIndex = fileList.index(readSingleFile) #初步處理檔案行,依次加入一個列表中 with open(readSingleFile,'r') as fileLine: while True: #整行讀取資料 lines = fileLine.readline() if not lines: break #如果該行不為空 else: # 該行有 單行註釋 if lines.find(codeAnnotationDec)>-1: #該行為存粹一行註釋 if lines.strip().find(codeAnnotationDec) == 0: willSaveList.append(lines) #該行既有程式碼,也有註釋 else: #處理json檔案,預設註釋和程式碼放在一行: if lines.find(":")>-1: willSaveList.append(lines) #處理 }else{ 情況 #存在三種情況:1: else{//dfsdfdsfsdf 2:}else{//dsfdfdsf 3.if(j == index){//計算的重量,用將要替換的配件的重量 elif len(lines[0:lines.find(codeAnnotationDec)].rstrip())>0 and lines[0:lines.find(codeAnnotationDec)].rstrip()[-1] == '{': #第一種情況處理: if lines.strip().find("else") == 0: dealCodeWithSpace(lines,willSaveList) #第二種 和第三種 情況處理 else: #第三種情況: if lines.strip().find('if') == 0: dealCodeWithSpace(lines,willSaveList) #第二種情況 else: #計算程式碼首部縮排空格長度 去掉尾部空格長度 - 去掉首尾空格長度 headSpaceLen = len(lines.rstrip())-len(lines.strip()) # 1.在 else 前面插入一行: willSaveList.append(lines[0:lines.find("else")]+'\n') # 求出將要處理的字串 else{ 縮排要和上一行 { 保持一致 willDealCode = headSpaceLen*' '+lines[lines.find("else"): ] # 2.按照 code;//dsfdsfsdf 的格式進行處理 dealCodeWithSpace(willDealCode,willSaveList) #不含特殊情況的註釋情況:例如:code;//annotation else: dealCodeWithSpace(lines,willSaveList) #該行沒有註釋(一行程式碼或者換行) else: # willSaveList[len(willSaveList)-1].scrip().find('\n') == 0: willSaveList.append(lines) pass #寫入同名檔案到另一個目錄下 with open(writeFileList[fileIndex],'w') as tempWrite: print("------ WRITE SUC------",writeFileList[fileIndex]); print(writeFileList[fileIndex]) for line in willSaveList: tempWrite.write(line) # print("******* SUC *******"); #讀取檔案的路徑 readFilePath = "./readFile" #寫入檔案的路徑 writeFile = "./writeFile" #開始處理檔案 doDealCode(readFilePath,writeFile)