我是靠谱客的博主 迷路黑米,最近开发中收集的这篇文章主要介绍python argparse nargs_Python argparse:将可选参数与nargs = argparse.REMAINDER组合在一起,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

我必须遗漏一些明显的东西.目标是使用argparse和第一个参数,第二个可选参数和任何其他剩余参数可选.

为了表明这个问题我做了两个测试解析器;它们之间的唯一区别是在一个中使用nargs = argparse.REMAINDER而在另一个中使用nargs =’*’.

def doParser1(argsin):

parser = argparse.ArgumentParser(description='Parser demo.')

parser.add_argument('req1', help='first required parameter')

parser.add_argument('--opt1', help='first optional parameter')

parser.add_argument('leftovers', nargs=argparse.REMAINDER,

help='all the other parameters')

argsout = parser.parse_args(args=argsin)

print argsout

return argsout

def doParser2(argsin):

parser = argparse.ArgumentParser(description='Parser demo.')

parser.add_argument('req1', help='first required parameter')

parser.add_argument('--opt1', help='first optional parameter')

parser.add_argument('leftovers', nargs='*',

help='all the other parameters')

argsout = parser.parse_args(args=argsin)

print argsout

return argsout

如果没有额外的参数,parser2可以工作.这是输入,后跟parser1和parser 1:

input: ['req1value', '--opt1', 'opt1value']

Namespace(leftovers=['--opt1', 'opt1value'], opt1=None, req1='req1value')

Namespace(leftovers=None, opt1='opt1value', req1='req1value')

如果有额外的参数,则在parser1中会遗漏opt1值,而parser2只会混淆:

input: ['req1value', '--opt1', 'opt1value', 'r1', 'r2']

Namespace(leftovers=['--opt1', 'opt1value', 'r1', 'r2'], opt1=None, req1='req1value')

usage: py-argparse.py [-h] [--opt1 OPT1]

[-leftovers [LEFTOVERS [LEFTOVERS ...]]]

req1

py-argparse.py: error: unrecognized arguments: r1 r2

预期的输出应该是:

Namespace(leftovers=['r1', 'r2'], opt1='opt1value', req1='req1value')

看起来这应该是一个简单的案例,这里简化了我真正想做的事情.我尝试过剩饭是可选的,添加了各种其他选项,但没有任何效果更好.

任何帮助,将不胜感激.

最后

以上就是迷路黑米为你收集整理的python argparse nargs_Python argparse:将可选参数与nargs = argparse.REMAINDER组合在一起的全部内容,希望文章能够帮你解决python argparse nargs_Python argparse:将可选参数与nargs = argparse.REMAINDER组合在一起所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部