是否可以解释getopt输入可能有一个参数,该参数可能包含也可能不包含参数?如果我这样做:
import getopt
import sys
optlist, args = getopt.getopt(sys.argv[1:], "b:")
for (x, y) in optlist:
print x, y
我在没有参数的情况下运行脚本$ python t.py -b,输出时出现错误
getopt.GetoptError: option -b requires argument.
如果我这样做:
optlist, args = getopt.getopt(sys.argv[1:], "b")
我使用包含参数的参数运行脚本$ python t.py -b 11,它无法识别此参数。
或者换句话说,是否可以将参数设置为默认值?
需要它,以便我可以在命令行上:
- 不指定参数意味着它不存在;
- 指定不带参数的参数——表示参数存在,其值为None或默认取值;
- 用参数指定参数 - 这意味着有一个参数并且它有一个值
我挖了源码
argparse,结果是这样的:你可以调用的不是方法parse,而是内部方法_parse_known_args,传入一个空的进去Namespace,如果没有key,里面就不会出现Namespace(但是defaultin的参数不会以这种方式考虑add_argument):结论:
当然,最好不要直接使用内部方法,但如果你真的想要,你可以。