我已经做了尽可能多的研究,但我还没有找到仅在特定条件下才需要某些 cmdline 参数的最佳方法,在这种情况下,只有在给出其他参数的情况下。这是我想在非常基本的层面上做的事情:
p = argparse.ArgumentParser(description='...')
p.add_argument('--argument', required=False)
p.add_argument('-a', required=False) # only required if --argument is given
p.add_argument('-b', required=False) # only required if --argument is given
据我所见,其他人似乎只是在最后添加自己的支票:
if args.argument and (args.a is None or args.b is None):
# raise argparse error here
有没有办法在 argparse 包中本地执行此操作?
原文由 DJMcCarthy12 发布,翻译遵循 CC BY-SA 4.0 许可协议
一段时间以来,我一直在寻找此类问题的简单答案。您需要做的就是检查
'--argument'
是否在sys.argv
中,所以基本上对于您的代码示例,您可以这样做:This way
required
receives eitherTrue
orFalse
depending on whether the user as used--argument
.已经测试过,似乎有效并保证-a
和-b
彼此之间具有独立的行为。