问题: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
我可以创建一个动作,但是想查看是否存在执行此操作的方法。
回答 0
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
实际上,您只需要使用此脚本中的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
详细信息在这里。
回答 2
和…之间的不同:
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
=>在第一种情况下,debug是7(默认情况下),在第二种情况下是“ None”
myscript.py --debug
=>在每种情况下,调试均为1
myscript.py --debug 2
=>在每种情况下,调试均为2
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。