欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現(xiàn)搜索文本文件內容腳本

 更新時間:2021年04月14日 10:40:01   作者:warrenjiang  
這篇文章主要為大家詳細介紹了python實現(xiàn)搜索文本文件內容的腳本,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文介紹用python實現(xiàn)的搜索本地文本文件內容的小程序。從而學習Python I/O方面的知識。代碼如下:

import os

#根據文件擴展名判斷文件類型
def endWith(s,*endstring):
 array = map(s.endswith,endstring)
 if True in array:
  return True
 else:
  return False

#將全部已搜索到的關鍵字列表中的內容保存到result.log文件中
def writeResultLog(allExistsKeywords):
 #行分隔符
 ls = os.linesep
 #結果日志文件名
 logfilename = "result.log" #相對路徑,文件在.py文件所在的目錄中
 try:
  fobj = open(logfilename,'w')
 except IOError,e:
  print "*** file open error:",e
 else:
  fobj.writelines(['%s%s' % (keyword,ls) for keyword in allExistsKeywords])
  fobj.close() 


#搜索指定關鍵字是否在指定的文件中存在
def searchFilesContent(dirname):
 #從searchkeywords.txt文件中初始化待搜索關鍵字列表
 filename = "searchkeywords.txt" #相對路徑,文件在.py文件所在的目錄中
 #待搜索關鍵字列表
 allSearchKeywords=[]
 #遍歷文件當前行已搜索到的關鍵字列表
 existsKeywordsThisLine=[]
 #全部已搜索到的關鍵字列表
 allExistsKeywords=[]

 try:
  fobj = open(filename,'r');
 except IOError,e:
  print "*** file open error:",e
 else:
  for eachLine in fobj:
   allSearchKeywords.append(eachLine.strip('\n')); #使用strip函數(shù)去除每行的換行符
  fobj.close();

 #從excludekeywords.txt文件中初始化要排除的搜索關鍵字列表
 filename = "excludekeywords.txt" #相對路徑,文件在.py文件所在的目錄中
 #要排除的搜索關鍵字列表
 allExcludedKeywords=[]
 try:
  fobj = open(filename,'r');
 except IOError,e:
  print "*** file open error:",e
 else:
  for eachLine in fobj:
   allExcludedKeywords.append(eachLine.strip('\n')); #使用strip函數(shù)去除每行的換行符
  fobj.close();

 #從全部已搜索到的關鍵字列表排除掉不用搜索的關鍵字
 for excluedkw in allExcludedKeywords:
  if(excluedkw in allSearchKeywords):
   allSearchKeywords.remove(excluedkw);


 #遍歷打開所有要在其中搜索內容的文件,若待搜索關鍵字列表為空,則不再繼續(xù)遍歷
 for root,dirs,files in os.walk(dirname):
  for file in files:
   if endWith(file,'.java','.xml','.properties'): #只在擴展名為.java/.xml/.properties文件中搜索
    #打開文件
    filename = root + os.sep + file #絕對路徑
    filename = filename.replace("\\","\\\\") #將路徑中的單反斜杠替換為雙反斜杠,因為單反斜杠可能會導致將路徑中的內容進行轉義了,replace函數(shù)中"\\"表示單反斜杠,"\\\\"表示雙反斜杠
    try:
     fobj = open(filename,'r');
    except IOError,e:
     print "*** file open error:",e
    else:
     #遍歷文件的每一行
     for fileLine in fobj:
      #判斷當前行是否包含所有搜索關鍵字
      for keyword in allSearchKeywords:
       #若包含,并添加到該行已搜索到的關鍵字列表中
       if keyword.upper() in fileLine.upper(): #將搜索關鍵字和該行文本內容都轉換為大寫后再進行匹配
        existsKeywordsThisLine.append(keyword)

      #將這些搜索到的關鍵字添加到全部已搜索到的關鍵字列表中,并包含文件名信息
      for keyword in existsKeywordsThisLine:
       allExistsKeywords.append(keyword+"\t"+filename.replace("\\\\","\\"))

      #將這些搜索到的關鍵字從待搜索關鍵字列表中移除(后續(xù)將不再搜索該關鍵字)
      for keyword in existsKeywordsThisLine:
       allSearchKeywords.remove(keyword)

      #清空該行已搜索到的關鍵字列表內容
      existsKeywordsThisLine = []

      #若所有的關鍵字都搜索到了,則記錄日志文件,并結束搜索工作
      if len(allSearchKeywords)==0:
       fobj.close();
       writeResultLog(allExistsKeywords)
       print "DONE!",
       return
     fobj.close();

 #全部文件遍歷結束
 writeResultLog(allExistsKeywords)
 print "DONE!",

#僅當本python模塊直接執(zhí)行時,才執(zhí)行如下語句,若被別的python模塊引入,則不執(zhí)行
if __name__ == '__main__':
 searchFilesContent(r"G:\ccsSmartPipe\SmartPipe\src\java")

1.筆者使用該程序對java項目中的源文件內容進行關鍵字的搜索。程序入參為該項目本地文件系統(tǒng)路徑G:\ccsSmartPipe\SmartPipe\src\java。

2.在配置文件中searchkeywords.txt中輸入要搜索的任意多個關鍵字

3.在配置文件中excludekeywords.txt中輸入在searchkeywords.

4.程序執(zhí)行完成后,即可在result.log日志文件中,查看搜索結果。即每個關鍵在哪些文件中存在。并給出每個文件的具體路徑。

附件:源代碼及配置文件

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 在spyder IPython console中,運行代碼加入參數(shù)的實例

    在spyder IPython console中,運行代碼加入參數(shù)的實例

    這篇文章主要介紹了在spyder IPython console中,運行代碼加入參數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 對于Python中線程問題的簡單講解

    對于Python中線程問題的簡單講解

    這篇文章主要介紹了對于Python中線程問題的簡單講解,線程一直是Python編程當中的熱點問題,而本文沒有涉及GIL線程鎖方面的內容,需要的朋友可以參考下
    2015-04-04
  • Python的集合類型之set和frozenset詳解

    Python的集合類型之set和frozenset詳解

    這篇文章主要為大家詳細介紹了Python的集合類型之set和frozenset,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Python中用xlwt制作表格實例講解

    Python中用xlwt制作表格實例講解

    在本篇文章里小編給大家整理的是一篇關于Python中用xlwt制作表格實例講解內容,有興趣的朋友們可以學習下。
    2020-11-11
  • Python?八個數(shù)據清洗實例代碼詳解

    Python?八個數(shù)據清洗實例代碼詳解

    不管你承不承認,數(shù)據清洗著實不是一件簡單的任務,大多數(shù)情況下這項工作是十分耗時而乏味的,但它又是十分重要的,本篇文章帶給你八個實例代碼
    2022-01-01
  • 使用python裝飾器計算函數(shù)運行時間的實例

    使用python裝飾器計算函數(shù)運行時間的實例

    下面小編就為大家分享一篇使用python裝飾器計算函數(shù)運行時間的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 玩數(shù)據必備Python庫之numpy使用詳解

    玩數(shù)據必備Python庫之numpy使用詳解

    NumPy提供了許多高級的數(shù)值編程工具,如矩陣數(shù)據類型、矢量處理,以及精密的運算庫,下面這篇文章主要給大家介紹了關于玩數(shù)據必備Python庫之numpy使用的相關資料,需要的朋友可以參考下
    2022-02-02
  • Python采用Django制作簡易的知乎日報API

    Python采用Django制作簡易的知乎日報API

    這篇文章主要為大家詳細介紹了Python采用Django制作簡易的知乎日報API,感興趣的小伙伴們可以參考一下
    2016-08-08
  • python如何使用replace做多字符替換

    python如何使用replace做多字符替換

    這篇文章主要介紹了python如何使用replace做多字符替換,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python零錢兌換的實現(xiàn)代碼

    Python零錢兌換的實現(xiàn)代碼

    假如有這樣一個問題給你一個整數(shù)數(shù)組?coins?,表示不同面額的硬幣以及一個整數(shù)?amount?,表示總金額,計算并返回可以湊成總金額所需的最少的硬幣個數(shù),接下來通過示例代碼給大家介紹Python零錢兌換問題,感興趣的朋友一起看看吧
    2022-05-05

最新評論