在Python OptParser中解析任意数量的参数

1 投票
2 回答
1194 浏览
提问于 2025-04-16 00:51

我想知道如何在Python的OptParser中定义一个可以接受任意数量参数的选项。

我希望能有这样的功能:

python my_program.py --my-option X,Y  # one argument passed, "X,Y"

python my_prgoram.py --my-option X,Y  Z,W  # two arguments passed, "X,Y" and "Z,W"

但是OptParser中的nargs=选项让我只能定义一个固定的数量。我该如何做到类似的事情呢?

parser.add_option("--my-options", dest="my_options", action="append", nargs="*")

也就是说,它应该简单地把--my-option后面的所有内容都放进一个列表里?比如,对于情况1,它应该是["X,Y"],对于情况2,它应该是["X,Y", "Z,W"]。

有没有什么方法可以用OptParser来实现这个?

谢谢。

2 个回答

0

你有没有试过去掉 n_args 这个部分?文档里的例子显示你其实不需要这个东西。

3

optparse模块在Python 2.7中已经不再推荐使用(这个版本刚发布不久!)。如果你能升级的话,可以使用它的替代品argparse模块。我觉得这个模块能满足你的需求。它支持在nargs中使用'*'这个值。

http://docs.python.org/library/argparse.html#nargs

撰写回答