2013-04-15 106 views
0

我有日誌文件(以YYMMDD格式命名),我想創建一個只從文件獲取重要信息的腳本(如包含「O: NVS:VOICE「)。我從來沒有用過Python,所以請幫忙!Python讀取日誌文件並獲取包含特定單詞的行

+1

我們需要一些你已經嘗試過的東西以及你遇到麻煩的地方。打開文件需要幫助嗎?解析那裏的數據?打印/寫出您感興趣的信息? – thegrinner

+0

實際上,我剛剛開始我的項目在Python中,所以我仍然在考慮解決方案,我想從有經驗的人那裏得到一些想法..腳本的目的是爲了獲得像我一樣特定的單詞作爲我從服務器每天生成的日誌文件中說,然後把它們放在mysql數據庫中,所以我不知道我怎麼能得到這些行,因爲它們很多,而且它們是每天創建的。 –

回答

10

這應該讓你開始很好:

infile = r"D:\Documents and Settings\xxxx\Desktop\test_log.txt" 

important = [] 
keep_phrases = ["test", 
       "important", 
       "keep me"] 

with open(infile) as f: 
    f = f.readlines() 

for line in f: 
    for phrase in keep_phrases: 
     if phrase in line: 
      important.append(line) 
      break 

print(important) 

這絕不是完美的,例如有沒有異常處理和模式匹配,但是你可以很容易地添加這些吧。看看正則表達式,這可能比詞組匹配更好。如果您的文件非常大,請逐行讀取以避免MemoryError。

輸入文件:

This line is super important! 
don't need this one... 
keep me! 
bla bla 
not bothered 
ALWAYS include this test line 

輸出:

['This line is super important!\n', 'keep me!\n', 'ALWAYS include this test line'] 

注:這是Python的3.3。如果您使用2.7,則需要修改打印語句(刪除括號)。

+0

您可以避免這個問題通過遍歷文件對象來處理大文件,而不是調用readlines。只要在你的'with'裏面移動你的'for line'並擺脫'f.readlines()' –

相關問題