本文實(shí)例講述了Python基于正則表達(dá)式實(shí)現(xiàn)檢查文件內(nèi)容的方法分享給大家供大家參考,具體如下:
這個是之前就在學(xué)python,欣賞python的小巧但是功能強(qiáng)大,是連電池都自帶的語言。平時工作中用Java ,覺得python在日常生活中比java用處要大,首先語法沒那么復(fù)雜,特別是io的操作,java里要寫一大坨沒關(guān)的代碼。還有就是不用編譯,而且linux系統(tǒng)默認(rèn)都會自帶。
這次遇到的問題是工作當(dāng)中想要遷移一個系統(tǒng)中的一個模塊,這個時候需要評估模塊里的代碼有沒有對其他代碼強(qiáng)依賴,就是有沒有import 其他模塊的代碼。如果通過人肉來坐,少量的文件還好,如果有大量的文件實(shí)在是很悲劇。這個時候就想起可以用pytho來檢索文件,通過正則表達(dá)式分析文件內(nèi)容,把有問題的文件名打印出來就可以了。
import osimport os.pathimport repackDir='/**/src/main/java/com/hz/yk/auction'p1=re.compile(r"yk/.((?!auction)/w)+/b")p2=re.compile(r"yk/.((?!domain)/w)+/b")p3=re.compile(r"yk/.((?!utils)/w)+/b")def processDirectory(args,dirname,filenames): # print 'Directory',dirname for filename in filenames: if os.path.splitext(filename)[1]=='.java': # print 'file',filename fileObj=open(dirname+ "/"+filename) hasOther=False for line in fileObj: if p1.search(line) and p2.search(line) and p3.search(line): hasOther=True print line if hasOther: print 'file:',filenamedef search(): os.path.walk(packDir,processDirectory,None)if __name__ == '__main__': search()
因?yàn)橄M吹綉?yīng)用其他模塊的代碼,所以排除掉自己的模塊名auction和公共的應(yīng)用domain,utils 。對剩下的符合條件的打印出import這句和文件名sikuli
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
新聞熱點(diǎn)
疑難解答
圖片精選