0

情報を解析して抽出する必要がある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 約 1 年間のログを見ています。1 日あたり約 200 万件のエントリがあり、多数のマシンについて報告されています。私の単一ファイルスクリプトは、すべてのマシンの「エントリ」を持つオブジェクトを生成しているので、私は疑問に思っています:

質問:
共同一時ファイルを生成するか、ファイルごとに実行し、ファイルベースのオブジェクトを生成し、x ファイルを同じ y マシンのエントリとマージする必要がありますか?

4

1 に答える 1

2

モジュールを使用globしてfileinput、それらすべてを効果的にループし、1 つの「大きなファイル」として見ることができます。

import fileinput
from glob import glob

log_files = glob('/some/dir/with/logs/*.log')
for line in fileinput.input(log_files):
    pass # do something
于 2013-03-08T12:51:52.200 に答える