我是個Python腳本導入日誌文件中Piwik和我能成功解析一次一個日誌文件,但如何做到這一點的所有目錄中的日誌文件?用python腳本解析多個日誌文件 - 如何?使用
自述腳本的用法是:
import_logs.py [options] log_file [ log_file [...] ]
所以,如果我有日誌文件u_ex120101.log到u_ex120701.log我怎麼能運行一次做所有這些文件?我敢肯定,答案是盯着我的臉,但我基本上對python一無所知。
謝謝。
我是個Python腳本導入日誌文件中Piwik和我能成功解析一次一個日誌文件,但如何做到這一點的所有目錄中的日誌文件?用python腳本解析多個日誌文件 - 如何?使用
自述腳本的用法是:
import_logs.py [options] log_file [ log_file [...] ]
所以,如果我有日誌文件u_ex120101.log到u_ex120701.log我怎麼能運行一次做所有這些文件?我敢肯定,答案是盯着我的臉,但我基本上對python一無所知。
謝謝。
用shell通配符調用腳本怎麼樣?
cd logs/
import_logs.py u_*.log
*注意:這雖然不適用於Windows。 Windows shell不會擴展通配符。接收程序必須這樣做(即,import_logs.py)
解窗口:使用cygwin,powershell或另一個* nix的狀外殼更換。
如果你有一堆日誌文件的目錄中,你只需要一個範圍當中,另一種選擇是寫一個小的Python腳本,需要在範圍和基礎,只是要求進口原木爲每一個(或者,如果你想特別想象,你可以直接導入import_logs
)。
您可以使用Python Popen
運行任何shell命令。所以,如果你想運行import_logs log_base_str01123.txt
,你可以只運行以下命令:
from subprocess import Popen, PIPE
print Popen("import_logs.py log_base_str01123.txt", stdout=PIPE, shell=True).stdout.read()
,如果你想這樣做的一串字符串:
from subprocess import Popen, PIPE
import os
base_prefix = "u_ex"
base_suffix = ".log"
logs=["my", "list", "of", "log#s"]
for log in logs:
path = "import_logs.py {prefix}{log_name}{suffix}".format(
prefix=prefix, log_name=log, suffix=base_suffix)
if not os.path.exists(log):
print Popen(,
stdout=PIPE, shell=True).stdout.read())
這可能是一個更通用的解決方案/讓你有更細緻的控制。
如果你想通過連續的值的列表,你可以使用:
logs = map(str, range(start_number, end_number + 1))
可以使用glob模塊在Python。 glob.glob()函數接受包含通配符的字符串,並返回具有匹配文件和文件夾的列表。
實施例:
import blob
# assume file_argument is a variable containing wildcard
file_argument = '/var/log/*.log'
for log_file in glob.glob(file_argument):
do_stuff(log_file)
這將導致Python來執行通配符擴展爲您服務。
我使用的是Windows Server 2012中,我與Python中沒有經驗,我有4年價值大約每大小20MB-40MB的日誌文件。
我只是想分享,我用一個免費的實用工具,我發現所謂的合併日誌來解決這個問題。使用copy *.log merged.txt
或type *.log > merged.txt
拿了非常非常長的時間,而這個工具做了我需要幾分鐘的工作。
這裏下載:http://www.allscoop.com/dotnet-software/log-file-merge.php
謝謝@philwilks,看起來像一個方便的工具。 – acowley
我也許應該補充我使用Windows的cmd.exe這個。那會在那裏工作嗎? – acowley
@acowley:你試過了嗎? Windows也使用'*'通配符。 – jdi
是的,我做到了。我認爲它也試圖解析import_logs.py文件 – acowley