的結束文檔頁面描述了基本的區別。
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']