在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} \

总之,我编写了一个小python脚本来解析日志文件中的数据。我能分析出我需要什么。现在,我正在尝试创建一个菜单,以便用户可以选择要解析的数据,而不是所有日志内容。我在想怎么做,有人能帮我开始做菜单吗。我是Python的新手

这就是我到目前为止所做的:

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自己的