argparse 文档页面的末尾描述了基本区别。
opts, args = parser.parse_args(sys.argv[1:])
args = parser.parse_args(sys.argv[1:])
在optparse 中,所有标记的参数都被捕获在opts 变量中。其他所有内容都在args 列表中。
在argparse 中,标记(也称为可选)和位置都收集在args 命名空间中
parse_known_args 给出更接近optparse 的输出:
args, extras = parser.parse_known_args(sys.argv[1:])
extras 是无法解析的字符串;大致对应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']