如何使用python脚本解析多个日志文件?

2024-09-28 15:28:19 发布

您现在位置:Python中文网/ 问答频道 /正文

Im使用python脚本将日志文件导入Piwik,我一次可以成功地解析一个日志文件,但是如何对目录中的所有日志文件进行解析呢?在

自述文件中,脚本的用法是:

import_logs.py [options] log_file [ log_file [...] ]

所以,如果我有日志文件u_x120101.log到u uex120701.log,我怎么能运行一次来处理所有这些文件呢?我肯定答案就在眼前,但我基本上对python一无所知。在

谢谢。在


Tags: 文件pyimport目录脚本log用法自述文件
3条回答

如果您在一个目录中有一堆日志文件,而您只需要其中的一个范围,另一个选择是编写一个小Python脚本,接受一个范围和一个基,然后为每个日志调用import日志(或者,如果您想特别喜欢,可以直接导入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()

如果你想对一堆绳子这么做:

^{pr2}$

这可能是一个更通用的解决方案/让您拥有更精细的控制。在

如果要查看连续值的列表,只需使用:

logs = map(str, range(start_number, end_number + 1))

用shell通配符调用脚本怎么样?在

cd logs/
import_logs.py u_*.log

*注意:这不适用于windows。Windows shell不会扩展通配符。接收程序必须这样做(即,导入_日志.py)

针对windows的解决方案:使用cygwinpowershell或其他类似*nix的shell替换。在

您可以在Python中使用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为您执行通配符扩展。在

相关问题 更多 >