我的 python 版本是 2.4.3。
现在我正在为 CD 播放器开发一个带有 python cmd 模块的 CLI。我有一些类,如 CDContainer(具有 addCD、removeCD 等方法)、CD(具有播放、停止、暂停等方法)。现在,我想为命令添加一些选项,而且如果选项输入不正确,CLI 可以返回有关错误输入类型或错误值的正确信息。例如,我想要“addcd --track 3 --cdname thriller”。我现在做的是通过 获取所有参数,将其拆分,并将其分配给相关变量,如下所示。
我的问题是在 python 中,是否有一些模块可以方便地解析和分析选项或参数?
修订:好的,我编辑它,感谢 gclj5 评论。
import cmd
class CDContainerCLI(cmd.Cmd):
def do_addcd(self, line):
args=line.split()
parser = OptionParser()
parser.add_option("-t", "--track", dest="track_number", type="int",
help="track number")
parser.add_option("-n", "--cdname", dest="cd_name", type="string",
help="CD name")
(options, positional_args) = parser.parse_args(args)
cd_obj= CD()
cd_obj.addCD(options.track_number, options.cd_name)
如果可能的话,你能写一些代码示例,只是为了展示如何去做吗?
非常感谢!!
请您参考如下方法:
根据您的 Python 版本,您应该查看 optparse (自 2.3 版起,自 2.7 版起弃用)或 argparse (从 2.7 版开始)。
一些使用 optparse 的示例代码(line 是您在 CLI 中从标准输入读取的字符串):
from optparse import OptionParser
args = line.split()
parser = OptionParser()
parser.add_option("-t", "--track", dest="track_number", type="int",
help="track number")
parser.add_option("-n", "--cdname", dest="cd_name", type="string",
help="CD name")
# args[0] contains the actual command ("addcd" in this example).
(options, positional_args) = add_cd_parser.parse_args(args[1:])
if options.track_number != None and options.cd_name != None:
cd_obj= CD()
cd_obj.addCD(options.track_number, options.cd_name)
print "add CD (track %d, name %s)" % (options.track_number, options.cd_name)
此解析器仅处理您的“addcd”命令。例如,对于更多命令,您可以在字典中使用多个 OptionParser 对象,并以命令名称作为键。你可以像这样解析选项:
(options, args) = parsers[args[0]].parse_args(args[1:])
查看 optparse 的文档以获取更多信息。例如,输出使用信息非常容易。还有一个tutorial可用。
