如何设置argparse.ArgumentParser参数分析器()获取需要[optional]位置参数(foo)的可选参数(-p bar)?你知道吗
程序应接受:
但不应接受:
这是我的密码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import argparse
def setupArgParser():
desc="tun0graf"
parser=argparse.ArgumentParser(description=desc)
parser.add_argument('logfilename', nargs='?', help='name of a logfile')
parser.add_argument('-s', dest='snapname', nargs=1,
help='create snapshot of logfilename and save it as snapname.png')
return(parser.parse_args())
arg=setupArgParser()
print "logfilename", arg.logfilename
print "snapname", arg.snapname
对函数的这种修改应该起到以下作用:
我正在测试解析后这两个参数的交互作用。我正在使用一个自定义的
usage
。这样,给出一个没有文件名的-s name
会产生:如果没有自定义用法,我们可以得到:
这是因为
parser
对这两个参数之间的相互作用一无所知,它通常把positional
参数放在optionals
之后(那些带有-
的参数)。你知道吗这看起来确实像子parser的情况,只是您希望
logfilename
是可选的。正如最近在Py2.7的https://stackoverflow.com/a/24211480/901925中所讨论的,这是不可能的。在最新的Py3版本中,subparser是可选的,但这是一个将被更改的bug(尽管仍然可以将它们标记为可选的)。你知道吗有人说要扩展
Mutually_exclusive_group
机制以允许像您这样的更一般的测试。你的例子将是一个很好的测试用例。但是我在上面写的测试比用建议的groups
所能做的任何事情都要简单。你知道吗相关问题 更多 >
编程相关推荐