2013-03-08 50 views
85

我想有一個可選的參數,如果只有標誌存在沒有指定的值將默認值,但存儲用戶指定的值而不是默認值,如果用戶指定一個值。有沒有可用的操作?Python的argparse:默認值或指定的值

一個例子:

python script.py --example 
# args.example would equal a default value of 1 
python script.py --example 2 
# args.example would equal a default value of 2 

我可以創建一個動作,而是想看看是否有一個現有的方式做到這一點。

回答

138
import argparse 
parser = argparse.ArgumentParser() 
parser.add_argument('--example', nargs='?', const=1, type=int) 
args = parser.parse_args() 
print(args) 

% test.py 
Namespace(example=None) 
% test.py --example 
Namespace(example=1) 
% test.py --example 2 
Namespace(example=2) 

  • nargs='?'指0或1參數
  • const=1設置默認當存在0參數
  • type=int轉換爲int
參數

如果你想test.py設置example 1,即使沒有指定--example,則包括default=1。也就是說,

parser.add_argument('--example', nargs='?', const=1, type=int, default=1) 

然後

% test.py 
Namespace(example=1) 
+1

感謝您對包括默認,這正是我所需要的東西。 – Michael 2013-10-31 13:53:20

+0

文件「/usr/lib/python2.7/argparse.py」,行1294,在add_argument中 action = action_class(** kwargs) TypeError:__init __()獲得了一個意外的關鍵字參數'const' – 2017-03-26 17:23:53

+1

謝謝你包含常量,這正是我所需要的。 – Dannid 2017-05-03 16:42:42