在python中添加简单菜单
总之,我编写了一个小python脚本来解析日志文件中的数据。我能分析出我需要什么。现在,我正在尝试创建一个菜单,以便用户可以选择要解析的数据,而不是所有日志内容。我在想怎么做,有人能帮我开始做菜单吗。我是Python的新手 这就是我到目前为止所做的:在python中添加简单菜单,python,shell,Python,Shell,总之,我编写了一个小python脚本来解析日志文件中的数据。我能分析出我需要什么。现在,我正在尝试创建一个菜单,以便用户可以选择要解析的数据,而不是所有日志内容。我在想怎么做,有人能帮我开始做菜单吗。我是Python的新手 这就是我到目前为止所做的: import re with open('temp.log') as f: lines = f.readlines() data = [] for line in lines: date = re.match(r'\d{2} \
import re
with open('temp.log') as f:
lines = f.readlines()
data = []
for line in lines:
date = re.match(r'\d{2} \w+ \d{2}', line).group()
time = line.split()[3]
ids = line.split()[4]
try:
agent = re.search(r'agent:\s(.*?),', line).group()
except:
agent = 'agent:'
try:
errID = re.search(r'ErrIdText:\s(.*?),', line).group()
except:
errID = 'ErrIdText:'
try:
clear = re.search(r'clearedID:\s(.*?)\)', line).group()
except:
clear = 'clearedID:'
row = [date, time, ids, agent, errID, clear]
data.append(row)
for row in data:
print(row)
因此,我想制作一个菜单,以便用户可以选择是否只想解析日期和代理名称。这是一个非常大的问题,但您需要的是一个类似于UI的界面或命令行界面,您可以自己实现,或使用类似库的工具进行构建 但是,命令行选项的实现要简单得多。您可以通过命令行来实现菜单。它将解析参数,您将能够过滤掉操作。对于简单的东西,它也很容易理解和实现。例如:
import re
import click
date_pattern = re.compile(r'\d{2} \w+ \d{2}')
agent_pattern = re.compile(r'agent:\s(.*?),')
err_pattern = re.compile(r'ErrIdText:\s(.*?),')
clear_pattern = re.compile(r'clearedID:\s(.*?)\)')
@click.command()
@click.option('--filter-agent', is_flag=True, default=False, help='Filter agent')
@click.option('--filter-err-id', is_flag=True, default=False, help='Filter Error ID')
@click.option('--filter-cleared-id', is_flag=True, default=False, help='Filter Cleared ID')
@click.argument('filename')
def get_valid_rows(filter_agent, filter_err_id, filter_cleared_id, filename):
with open(filename) as f:
lines = f.readlines()
data = []
for line in lines:
date = date_pattern.match(line).group()
time = line.split()[3]
ids = line.split()[4]
row = [date, time, ids]
if filter_agent:
try:
agent = agent_pattern.search(line).group()
except:
agent = 'agent:'
row.append(agent)
if filter_err_id:
try:
errID = err_pattern.search(line).group()
except:
errID = 'ErrIdText:'
row.append(errID)
if filter_cleared_id:
try:
clear = clear_pattern.search(line).group()
except:
clear = 'clearedID:'
row.append(clear)
data.append(row)
# Do everything else
if __name__ == "__main__":
get_valid_rows()
它甚至会为您生成格式良好的帮助消息
Usage: parselog.py [OPTIONS] FILENAME
Options:
--filter-agent Filter agent
--filter-err-id Filter Error ID
--filter-cleared-id Filter Cleared ID
--help Show this message and exit.
您可以根据自己的喜好对其进行编辑,以完全实现您想要的功能。请查看以确认,这将通过命令行参数来实现。不需要任何用户界面?因为我想把它作为命令行参数。谢谢,它将通过命令行工作,不需要任何用户界面。要使用它,请在帮助菜单中运行python parselog.py-help。我没有单击我的计算机…有没有其他方法可以实现命令行而不使用click?您可以通过pip install-user click安装click,这将需要安装pip。既然你说你是一个新手,你应该熟悉pip并用pip安装软件包。否则,另一种选择是使用Python自己的