2017-08-15 172 views
2

我已經添加了一個參數-c,現在我想添加另一個名爲-ca的參數。如何將-ca的默認值設置爲-c?我想要做的是,如果沒有指定-ca,則將-c指定爲-ca。Python Argparse - 將參數的默認值設置爲另一個參數

parser.add_argument("-c", type=str) 

parser.add_argument("-ca", type=str, default=XXX) 

謝謝。

+1

如果沒有指定'-ca',然後'-c'應該分配給'-ca',但如果沒有指定'-c'和'-ca',那麼? – Haranadh

+0

在這種情況下,您可以假定-c是強制性的。 – Allen

+0

在讀取數據到arg-parse並在從argparse對象讀取之後處理它?問題是什麼,?只是好奇地問。我會嘗試寫樣本並更新你。 – Haranadh

回答

2

通常,單個短劃線標誌是單個字符。所以-ca是不明智的,但不是非法的。在正常的POSIX實踐中,它可以被解釋爲-c a-c -a

另外​​允許標記參數(optionals)以任何順序發生。

解析從分配所有默認值開始。遇到相關標誌時,新值將覆蓋默認值。根據該順序,一個參數不可能將另一個參數的值作爲默認值。

一般來說,參數之間的交互最好在解析後處理。有一個mutually_exclusive分組,但沒有mutually_inclusive。您可以通過自定義類Action進行某種交互,但實現這一點與任何解析後測試一樣有效。

總之,最簡單的做法是使用默認defaultNone和測試

if args.ca is None: 
    args.ca = args.c 
相關問題