Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的简单菜单,不使用;";_Python - Fatal编程技术网

Python中的简单菜单,不使用;";

Python中的简单菜单,不使用;";,python,Python,全部, 我编写了一个小python脚本来解析日志文件中的数据。我能分析出我需要什么。现在,我正在尝试创建一个菜单,以便用户可以选择要解析的数据,而不是所有日志内容。我在想怎么做,有人能帮我开始做菜单吗。此外,我的系统上没有“pip”,我不允许使用“pip” 我是Python的新手 这就是我到目前为止所做的: import re with open('temp.log') as f: lines = f.readlines() data = [] for line in lines:

全部,

我编写了一个小python脚本来解析日志文件中的数据。我能分析出我需要什么。现在,我正在尝试创建一个菜单,以便用户可以选择要解析的数据,而不是所有日志内容。我在想怎么做,有人能帮我开始做菜单吗。此外,我的系统上没有“pip”,我不允许使用“pip”

我是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)

所以我想制作一个菜单,这样用户可以选择是否只想解析日期和代理名称我希望菜单传递命令行参数而不是用户界面

您可以使用
sys
包来读取命令行参数。在您的情况下,运行脚本可能如下所示:

python script.py agent date
在脚本中,使用命令行参数列表中的sys.argv读取这些参数。请记住,
sys.argv[0]
是一个脚本名称-用户提供的所有参数都从索引
1
开始,即

sys.argv[1] ==> agent
sys.argv[2] ==> date
然后,您可以使用if语句来控制要运行的操作

import sys

if 'agent' in sys.argv:
    # parse agent name
if 'date' in sys.argv:
    # parse date
@编辑 快速示例:

import re, sys

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]
    row = [date, time, ids]

    if 'agent' in sys.argv:
        try:
            agent = re.search(r'agent:\s(.*?),', line).group()
            row.append(agent)
        except:
            agent = 'agent:'
    if 'err' in sys.argv:
        try:
            errID = re.search(r'ErrIdText:\s(.*?),', line).group()
            row.append(errID)
        except:
            errID = 'ErrIdText:'
    if 'clear' in sys.argv:
        try:
            clear = re.search(r'clearedID:\s(.*?)\)', line).group()
            row.append(clear)
        except:
            clear = 'clearedID:'

    data.append(row)

 for row in data:
 print(row)

你可以用
日期
时间
ID
变量做同样的事情(如果
的东西)。

如果我正确理解你的问题,我相信你需要
输入
功能

它允许您在脚本运行时从用户处获取信息

user_response = input("What would you like to print?")
print(user_response)

这将在控制台上显示
您想要打印什么?
,并允许用户键入内容。当用户按下enter键时,打印命令将显示用户键入的内容。

菜单是一个用户界面。您想要一个,还是希望通过命令行参数完全控制它?创建命令行参数以从用户获取数据,并在代码库中创建一个函数,该函数根据用户输入解析数据并显示给用户user@Ben通过命令行args plzWelcome to SO完全控制。请花点时间阅读该页面上的链接和其他链接。你能告诉我在哪里可以添加这些内容吗code@NickGonzales如果这变得更加复杂,请查看-它已经包含在python中