2011-01-10 78 views
2

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

我希望能够发出这样的命令:

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

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

[编辑]要清楚上面的命令是要进入我的命令行应用程序不终点站。上面的代码会调用我的Cmd模块的do_resize(self,line)方法,并以字符串形式传递参数。出于这个原因,OptParse和argparse不会做我所需要的,因为它们似乎只从sys.argv获取参数。

一些参数是必需的,一些是可选的。当其他人被使用时,一些变得需要。

什么是解析参数字符串的最佳方法?我已经阅读了Python中的工具,这使得这很容易,但我不知道我在找什么。

+0

`getopt`呢? http://docs.python.org/library/getopt.html – joksnet 2011-01-10 12:08:34

+0

或者另类`argparse`:http://docs.python.org/library/argparse.html – joksnet 2011-01-10 12:10:07

回答

7

您正在寻找optparseargparse为Python 2.7+)

编辑:根据文档的this部分事实上,你可以调用函数parse_args传递的参数列表,其中defults(但不限制)sys.argv[1:]

所以,如果你有例如args_str = '-file all -height 100 -width 200 -type jpeg'你可以拨打parser.parse_args(args_str.split()),它会正确解析选项。

+0

关于第二个想法,我不认为这是我正在寻找。据我可以看到这些只从sys.argv获取参数,而我试图从运行时输入到我的Cmd模块的字符串中获取它们。看到我上面的编辑。 – 2011-01-10 12:50:12

0

shlex模块如何?我认为这正是为了这个目的。