python 用3.x版本開啟2.x版本程式碼時print處理
阿新 • • 發佈:2019-02-11
當你用3.x版本的python去開啟2.x版本的時候,執行時老會報錯,print 由於沒帶括號老報錯,一個一個去加很麻煩,所以推薦使用一段程式碼來解決這個問題。
import os allFileNum = 0 def printPath(level, path): global allFileNum ''' 列印一個目錄下的所有資料夾和檔案 ''' # 所有資料夾,第一個欄位是次目錄的級別 dirList = [] # 所有檔案 fileList = [] # 所有檔案 包含路徑 filePathList = [] # 返回一個列表,其中包含在目錄條目的名稱(google翻譯)files = os.listdir(path) # 先新增目錄級別 dirList.append(str(level)) for f in files: if(os.path.isdir(path + '/' + f)): # 排除隱藏資料夾。因為隱藏資料夾過多 if(f[0] == '.'): pass else: # 新增非隱藏資料夾 dirList.append(f) if(os.path.isfile(path + '/' + f)): # 新增檔案 fileList.append(f) filePathList.append(path+ '/' + f) # 當一個標誌使用,資料夾列表第一個級別不列印 i_dl = 0 for dl in dirList: if(i_dl == 0): i_dl = i_dl + 1 else: # 列印至控制檯,不是第一個的目錄 print ('-' * (int(dirList[0])), dl) # 列印目錄下的所有資料夾和檔案,目錄級別+1 printPath((int(dirList[0]) + 1), path + '/' + dl) for fl in fileList: # 列印檔案 print ('-' * (int(dirList[0])), fl) #fixPrint(fl) # 隨便計算一下有多少個檔案 allFileNum = allFileNum + 1 for fl in filePathList: fixPrint(fl) def fixPrint(path): file = open(path,"r",encoding="utf-8") newLines = []; all_the_text = file.readlines( ) for line in all_the_text: index = line.find("print") #檢查當前行是否有print 同時是否已經有()了 if(index>=0 and line[index+5:index+8].find('(')==-1): #對有print的資料進行處理, line = line.replace("print","print (") if(line.find("\n")>0): line = line.replace("\n"," )" +"\n") else: line+=")" newLines.append(line) file.close() #直接覆蓋掉原來的檔案 newFile = open(path,"w",encoding="utf-8") for line in newLines: newFile.write(line) newFile.close() if __name__ == '__main__': printPath(1, "G:\LOL\code") #這個路徑是你程式碼的目標路徑,只需修改這個就可以了。