请说明为什么下面的代码都给出了错误,尽管两者都表示相同的选项。
In [3]: parser = optparse.OptionParser()
In [4]: parser.add_option("--currencies", "--currency", "--ccy")
Out[4]: <Option at 0x7f113e6c4488: --currencies/--currency/--ccy>
In [5]: parser.parse_args(["--curr", "CHF"])
Usage: ipython [options]
ipython: error: ambiguous option: --curr (--currencies, --currency?)
An exception has occurred, use %tb to see the full traceback.
答案 0 :(得分:1)
没有关于此问题的真实文档,但您可以查看the source code并了解会发生什么。
简而言之,optparse
将检查给定的参数是否彼此不太接近。
如果两个参数(或更多)以相同的字符串开头(例如foo
,foobar
和foofoo
,它们都以foo
开头),它将引发{{ 1}}。
在您的情况下,AmbiguousOptionError
和--currencies
以--currency
开头,因此当您要求解析--curr
--curr
时,无法说出您是否要说{ {1}}或optparse
。