的结束文档页面描述了基本的区别。
opts, args = parser.parse_args(sys.argv[1:])
args = parser.parse_args(sys.argv[1:])
在optparse
,所有标记参数被在opts
变量捕获。其他一切都在args
列表中。
在,两个标记(也称为自选)和positionals被收集在args
命名空间
parse_known_args
给出了一个输出更接近optparse
:
args, extras = parser.parse_known_args(sys.argv[1:])
extras
都是字符串,它可以” t解析;大致对应于由optparse
返回的第二个变量。
启动一个交互式shell,定义几个解析器,并使用不同的参数进行播放。当然,还可以打印输出('opts','args','extras')以查看它们的产生。
如果您还有其他问题,请在您的问题中包含示例解析器和输出。
In [3]: aparser=argparse.ArgumentParser()
In [4]: aparser.add_argument('-f');
In [5]: aparser.add_argument('bar');
In [6]: oparser=optparse.OptionParser()
In [7]: oparser.add_option('-f')
optparse解析:
In [22]: opts, rest = oparser.parse_args('-f one two'.split())
In [23]: opts
Out[23]: <Values at 0xaca3a02c: {'f': 'one'}>
In [24]: rest
Out[24]: ['two']
In [25]: opts.f
Out[25]: 'one'
argparse解析
In [26]: args = aparser.parse_args('-f one two'.split())
In [27]: args
Out[27]: Namespace(bar='two', f='one')
In [28]: args.f
Out[28]: 'one'
In [29]: args.bar
Out[29]: 'two'
parse_known_args:
In [30]: args, extras = aparser.parse_known_args('-f one two three'.split())
In [31]: args
Out[31]: Namespace(bar='two', f='one')
In [32]: extras
Out[32]: ['three']