2013-03-08 50 views
0

我有一堆apache日誌文件,我需要解析並從中提取信息。我的腳本對單個文件工作正常,但我想知道處理多個文件的最佳方法。如何在Python中的幾個大型apache日誌文件上運行邏輯?

我應該:

- loop through all files and create a temporary file holding all contents 
- run my logic on the "contact-ed" file 

或者

- loop through every file 
- run my logic file by file 
- try to merge the results of every file 

Filewise我期待在一年左右的日誌,每天大約200萬個條目,報告了大量的機器。我的單文件腳本生成具有「項」爲每一臺機器的對象,所以我想知道:

問:
我應該產生一個聯合臨時文件或運行文件通過文件,生成文件基於對象和合並X文件與條目相同的Y機器?

+1

你可能想看看在http://www.dabeaz .COM /發電機/ Generators.pdf。這就是我從中學到的東西,他有一些很酷的大日誌文件示例 – javex 2013-03-08 12:51:37

+0

@javex:也很有趣!我看看 – frequent 2013-03-08 12:59:55

回答

2

您可以使用globfileinput模塊有效地遍歷所有這些,把它看作是一個「大文件」:

import fileinput 
from glob import glob 

log_files = glob('/some/dir/with/logs/*.log') 
for line in fileinput.input(log_files): 
    pass # do something 
+0

啊。這聽起來不錯! – frequent 2013-03-08 12:52:11

+1

@frequent如果文件需要按照嚴格的順序處理,那麼你可能會考慮按照一些標準對'log_files'進行排序...... – 2013-03-08 12:56:18

+0

感謝提示 – frequent 2013-03-08 13:00:12

相關問題