2015-12-16 62 views
-3

我有一個具有默認值參數的腳本。 我想要做的事:更改具有默認值的參數行爲

$sample.py => Dont do anything 
$sample.py -R => Use default value of -R 
$sample.py -R <value> =>do something based on value passed 

這是可行的argparse?

大家好。請注意,我的問題與解決方案中提到的問題不同。

基本上我想要對應於-R的動作只有當我在命令行上傳遞-R時纔會執行。 如果僅傳遞-R,則-R的值爲默認值。

如果我運行沒有-R的py文件,則不應該完成對應於-R的操作。

+2

是的。這是可行的。 – Mast

+3

[Argparse可選位置參數?]可能重複?(http://stackoverflow.com/questions/4480075/argparse-optional-positional-arguments) – Mast

+0

這看起來像一個可選的可選參數,而不是位置。 :) – hpaulj

回答

3
parser.add_argument('-R',nargs='?', default='default',const='const') 

應該產生

test.py => namspace(R='default') 
test.py -R => namespace(R='const') 
test.py -R value => namespace(R='value') 

這是記錄在https://docs.python.org/3/library/argparse.html#nargs,第nargs='?'

+0

謝謝你解決了我的問題,花了我一段時間來調整按代碼:) –