在argparse中设置互斥集

9 投票
1 回答
574 浏览
提问于 2025-04-17 16:31

我正在使用一个互斥组,但我希望有多个选项可以属于一个互斥的集合。我想让我的用法看起来像这样:

[--conf CONF | --hostname HOSTNAME --port PORT]

有没有什么办法可以实现这个?我试过给互斥组添加一个参数组,但互斥的部分并不适用于子组,这样就允许同时使用 --conf file --hostname host --port 22 了。

1 个回答

3

这不是一个使用 argparse 的答案,但仍然可能解决你的问题:使用 docopt 代替 argparse,可以让你只需写出你想要的用法模式,然后 docopt 会自动解析和验证传递给你程序的参数。在你的情况下,

prog_name (--conf CONF | --hostname HOST --port PORT)

这样可以实现你想要的互斥组。

撰写回答