在Python Cmd模块中解析参数

时间:2011-01-10 12:07:17

标签: python cmd

我正在使用Cmd模块在Python中编写命令行工具。

我希望能够发出如下命令:

resize -file all -height 100 -width 200 -type jpeg

resize -file 'a file.jpg' -type png -height 50 -width 50

[edit]要明确上述命令是从终端进入我的命令行应用程序。上面的行将调用我的Cmd模块的do_resize(self,line)方法,并将参数作为字符串传递。出于这个原因,OptParse和argparse不能满足我的需要,因为它们似乎只能从sys.argv中获取参数。

某些参数是必需的,有些是可选的。有些人在使用其他人时变得必需。

解析参数字符串的最佳方法是什么?我已经读过Python中的工具可以使这很容易,但我不确定我在寻找什么。

4 个答案:

答案 0 :(得分:7)

您正在寻找optparseargparse for python 2.7 +)

编辑:事实上,根据文档的this部分,您可以调用函数parse_args传递一个参数列表,这些参数会侮辱(但不限于){{ 1}}

因此,如果您有sys.argv[1:],则可以调用args_str = '-file all -height 100 -width 200 -type jpeg',它会正确解析选项。

答案 1 :(得分:3)

最佳选择是argparse模块。

答案 2 :(得分:1)

我喜欢getopt,因为它很简单。

答案 3 :(得分:0)

shlex模块怎么样?我认为这正是出于这个目的。