我希望获得下一个行为:
python script.py
> my_arg is None
python script.py --my-arg
> my_arg is "default"
python script.py --my-arg some_value
> my_arg is "some_value"
如何为Argparser配置此参数?
到目前为止我尝试过:
#!/usr/bin/env python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--my-argument', nargs='?', default='default')
args = parser.parse_args()
print(args.my_argument)
但对test.py
我有default
答案 0 :(得分:4)
在此处找到解决方案Python argparse: default value or specified value
我的脚本如下:
#!/usr/bin/env python
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--my-argument', nargs='?', const='default')
args = parser.parse_args()
print(args.my_argument)
答案 1 :(得分:1)
这个怎么样?使用append
操作来区分未指定的案例/ --my-arg
指定案例:
>>> import argparse
>>>
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--my-arg', action='append', nargs='?', default=[])
>>> def parse(argv):
... args = parser.parse_args(argv)
... if not args.my_arg:
... return None
... return args.my_arg[0] or 'default'
...
>>> parse([]) # python script.py
>>> parse(['--my-arg']) # python script.py --my-arg
'default'
>>> parse(['--my-arg', 'some_value']) # python script.py --my-arg some_value
'some_value'