繁体   English   中英

Python argparse互斥args

[英]Python argparse mutual exclusive args

我如何让argparse做类似的事情:

[ 'all' | [ pos1 [ pos2 [ pos3 ...]]]] --some --other --flags

all都是保留字(如果它不需要-前缀,那么它就是一个标志就不行了)

第二:是否可以为命名参数设置一些别名,如-h--help意味着相同的选项? 也许我应该尝试使用add_mutually_exclusive_group()

add_mutually_exclusive_group()就是为此而设计的 - 您正在尝试添加互斥组。

关于你问题的第二部分,这应该做你想要的:

parser.add_argument('-f', '--foobar')

(注意:你的问题有点令人困惑 - 那里有两个问题,第二个问题直接进入另一个关于第一个问题的句子。更不用说无数的拼写错误......我会尽力帮助,但你能做得更清楚我们能更清楚地回答你的问题。)

更新至于我可以告诉互斥参数必须必需的,但不能要求位置参数。 因此,位置参数不能相互排斥(可能是因为否则解释器无法分辨出什么是什么)。 出于您的目的,我认为这并不重要,因为解释您的参数的代码实际上都是相同的。

假设您可以按照您尝试的方式执行此操作,然后必须执行以下操作:

# all == True  
# pos == ('this', 'that', 'theother')

if all == true:
    do_some_stuff('all')
else:
    do_some_other_stuff('positional arguments')

然而,如果您接受“所有”作为您的位置参数之一,您将不得不这样做:

# pos = ('all', 'this, 'that', 'theother')

if pos[0] == 'all': #other parameters are ignored
    do_some_stuff('all')
else:
    do_some_other_stuff('positional arguments')

除非你有某些具体原因,否则我认为没有理由不采用后一种方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM