簡體   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