Python argparse:默认值或指定值

时间:2013-03-08 18:49:47

标签: python default-value 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

我可以创建一个动作,但想看看是否有现成的方法。

3 个答案:

答案 0 :(得分:215)

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.pyexample设置为1,即使未指定--example,也请添加default=1。也就是说,用

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

然后

% test.py 
Namespace(example=1)

答案 1 :(得分:8)

之间的区别:

parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1, default=7)

parser.add_argument("--debug", help="Debug", nargs='?', type=int, const=1)

因此是:

myscript.py =>在第一种情况下,调试为7(默认情况下),在第二种情况下为“无”

myscript.py --debug =>在每种情况下,调试均为1

myscript.py --debug 2 =>在每种情况下,调试均为2

答案 2 :(得分:5)

实际上,您只需要在default脚本中使用add_argument的参数test.py

import argparse

if __name__ == '__main__':

    parser = argparse.ArgumentParser()
    parser.add_argument('--example', default=1)
    args = parser.parse_args()
    print(args.example)

test.py --example
% 1
test.py --example 2
% 2

详细信息为here