我是Python的初学者。你知道吗
我的任务是编写一个交互式文本库程序,该程序有三个功能:
要求用户输入要使用的数据/文件(.text)的名称
然后让他们输入命令:
一sd yyyymmdd yyyymmdd --> command 1
其中sd=当天(中间)所有服务器的互联网负载,但我 有2个文本文件,注意所有值必须作为列返回/打印
二。dl server1 server 2 --> command 2
其中dd=服务器1和服务器2之间的负载差异
从选定的文件中,他们可以使用以下命令查看平均服务器负载:
三yearly YYYY yyyy ---> command 3
显示从第一年(YYYY)到第二年(YYYY)的总负荷/平均负荷。
当用户输入=(q)时,程序退出,否则将打印(坏/未知)。
问题1:
我应该使用s.spilt()
,元组还是什么?它应该是什么样子的?你知道吗
问题2:
使用bool
函数(True、False)可以吗?你知道吗
您试图构建的部分是一个命令解析器。你知道吗
如果您的命令语言非常简单,那么可以使用
split
。只有当且仅当:如果所有这些都是真的,那么您的解析器非常简单:
如果输入是
'sd yyyymmdd yyyymmdd\n'
,那么最终得到的是cmd = 'sd'
和args = ['yyyymmdd', 'yyyymmdd']
,我想这就是你想要的。然后,如果您有一个dict将命令名映射到处理这些命令的函数,您可以执行以下操作:在本例中,如果您的
handlers
是{'sd': handle_sd, 'q': handle_quit}
,那么这将调用handle_sd('yyyymmdd', 'yyyymmdd')
,这也是您想要的。(当然,在现实生活中,您需要一些错误处理,以防用户键入dict中没有的命令名,或者给出错误的参数数,但这只是一个简单的示例。)如果您需要一些更复杂的东西,例如,在参数中包含带引号或转义的空格的方法,类似于您的
bash
或cmd.exe
shell所做的,那么您可能可以避开csv
模块(或者shlex
模块)。你知道吗如果需要更复杂的东西,则需要使用
pyparsing
之类的方法构建自己的解析器。你知道吗您可能还想看看如何使用^{} 模块,而不是围绕
input
编写自己的循环,在映射中查找cmd
字符串等。请参阅docs页底部的示例。在PyPI上还有许多更强大的替代品,您可以搜索。你知道吗相关问题 更多 >
编程相关推荐