我正在使用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中的工具可以使这很容易,但我不确定我在寻找什么。
答案 0 :(得分:7)
您正在寻找optparse(argparse 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模块怎么样?我认为这正是出于这个目的。