相互排斥的论据群?

时间:2016-04-05 21:39:23

标签: python argparse

我有一个Python文件,其中包含源代码中的单元测试。它的工作原理如下:

parser = argparse.ArgumentParser()
parser.add_argument('--test', action='store_true', help="Run unit tests and return.")

args = parser.parse_args()

if args.test:
    testsuite = unittest.TestLoader().loadTestsFromTestCase(SanitizeTestCase)
    unittest.TextTestRunner(verbosity=1).run(testsuite)

如果args.test为false,程序将按预期运行。我不想把它变成一个完整的setuptools项目,它是一个非常简单的脚本,带有一些单元测试来评估它是否符合它的预期。

我现在发现自己需要解析其他论点,以及事情开始分崩离析的地方。 --test是一个互斥参数,如果传递--test,则所有其他参数都不适用。

有没有办法在argparse中拥有互斥的参数组?

1 个答案:

答案 0 :(得分:0)

mutually exclusive group机制,但该组中的所有参数都是互斥的。你不能说,--test x或其他任何其他人。

但是这样一个群体没有做任何深刻的事情。它会为usage行添加一些标记(尝试一下),并且当您的用户(您自己?)违反排他性时会抱怨。

你可以自己做同样的事情,并对它们进行微调。您可以为parser提供自定义usage行。解析后,您可以选择忽略冲突的值,也可以选择引发自己的错误消息(parser.error('dumb user, cant you read ...?'))。例如,如果args.testTrue,则可以忽略所有其他参数,无论其值如何。