2024-09-28 15:28:19 发布
网友
Im使用python脚本将日志文件导入Piwik,我一次可以成功地解析一个日志文件,但是如何对目录中的所有日志文件进行解析呢?在
自述文件中,脚本的用法是:
import_logs.py [options] log_file [ log_file [...] ]
所以,如果我有日志文件u_x120101.log到u uex120701.log,我怎么能运行一次来处理所有这些文件呢?我肯定答案就在眼前,但我基本上对python一无所知。在
谢谢。在
如果您在一个目录中有一堆日志文件,而您只需要其中的一个范围,另一个选择是编写一个小Python脚本,接受一个范围和一个基,然后为每个日志调用import日志(或者,如果您想特别喜欢,可以直接导入import_logs)。在
import_logs
您可以在Python中使用Popen运行任何shell命令。因此,如果您想运行import_logs log_base_str01123.txt,可以只运行以下命令:
Popen
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()
如果你想对一堆绳子这么做:
这可能是一个更通用的解决方案/让您拥有更精细的控制。在
如果要查看连续值的列表,只需使用:
logs = map(str, range(start_number, end_number + 1))
用shell通配符调用脚本怎么样?在
cd logs/ import_logs.py u_*.log
*注意:这不适用于windows。Windows shell不会扩展通配符。接收程序必须这样做(即,导入_日志.py)
针对windows的解决方案:使用cygwin、powershell或其他类似*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为您执行通配符扩展。在
如果您在一个目录中有一堆日志文件,而您只需要其中的一个范围,另一个选择是编写一个小Python脚本,接受一个范围和一个基,然后为每个日志调用import日志(或者,如果您想特别喜欢,可以直接导入
import_logs
)。在您可以在Python中使用
Popen
运行任何shell命令。因此,如果您想运行import_logs log_base_str01123.txt
,可以只运行以下命令:如果你想对一堆绳子这么做:
^{pr2}$这可能是一个更通用的解决方案/让您拥有更精细的控制。在
如果要查看连续值的列表,只需使用:
用shell通配符调用脚本怎么样?在
*注意:这不适用于windows。Windows shell不会扩展通配符。接收程序必须这样做(即,导入_日志.py)
针对windows的解决方案:使用cygwin、powershell或其他类似*nix的shell替换。在
您可以在Python中使用glob模块。 这个环球网()函数接受包含通配符的字符串,并返回包含匹配文件和文件夹的列表。在
示例:
这将导致Python为您执行通配符扩展。在
相关问题 更多 >
编程相关推荐