最近想學習一門腳本語言,綜合考慮,選擇了python.
花了幾天時間看完了 簡明 Python 教程 ,想着應該寫點什么東西才好,剛好我使用的是3.x版本,以前好多2.x的代碼都直接報錯,尤其是print語句,手動加()太蛋疼,遂起了寫個自動加()的腳本的心思.
先是在這里找到了 python 讀取一個目錄下的所有目錄和文件 的代碼,然后寫了了個fixPrint的函數, 在原有代碼的基礎上加上了修復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, "你的目標文件所在文件夾路徑")
