在Python Cmd模块中解析参数

3 投票
4 回答
3589 浏览
提问于 2025-04-16 09:42

我正在用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里有一些工具可以让这件事变得简单,但我不太确定我该找什么。

4 个回答

1

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

3

最好的选择是 argparse 模块。

7

你可以使用 optparse (如果你用的是 Python 2.7 及以上版本,可以用 argparse

补充:其实根据 文档中的这一部分,你可以调用一个叫 parse_args 的函数,传入一个参数列表,这个列表默认是 sys.argv[1:](但不限于此)

所以,比如说你有 args_str = '-file all -height 100 -width 200 -type jpeg' 这样的字符串,你可以用 parser.parse_args(args_str.split()) 来正确解析这些选项。

撰写回答