我有一个关于 python argparse 的问题:是否可以有一个不需要位置参数的可选参数?
Example:
parser.add_argument('lat', help="latitude")
parser.add_argument('lon', help="longitude")
parser.add_argument('--method', help="calculation method (default: add)", default="add")
parser.add_argument('--list-methods', help="list available methods", action="store_true")
正常的命令行是test.py 47.249 -33.282
or test.py 47.249 -33.282 --method sub
。但是一旦我用以下命令调用脚本test.py --list-methods
列出所有可用的方法,我得到error: to few arguments
。如何使用 argparse 来获得此可选参数(--list-methods)而无需位置参数(lat,lon)?
- 设置默认值并
nargs='?'
对于你的立场论点
-
手动检查您的代码latitude and 经度当您不在时已设置列表方法 mode
parser = argparse.ArgumentParser()
parser.add_argument('lat', help="latitude",default=None, nargs='?')
parser.add_argument('lon', help="longitude",default=None, nargs='?')
parser.add_argument('--method', help="calculation method (default: add)", default="add")
parser.add_argument('--list-methods', help="list available methods", action="store_true")
args = vars(parser.parse_args())
if not args['list_methods'] and (args['lat'] == None or args['lon'] == None):
print '%s: error: too few arguments' % sys.argv[0]
exit(0)
if args['list_methods']:
print 'list methods here'
else :
print 'normal script execution'
这使 :
$ test.py --列表方法
在这里列出方法
$ 测试.py 4
test.py:错误:参数太少
测试.py 4 5
正常脚本执行
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)