我遇到了以下有趣的错误:
parser.add_option("-n", "--number", metavar="NUMBER", type="int",
help="number is NUMBER")
(options, args) = parser.parse_args()
if options.number: # User added a number
do something
exit(0)
过了一会儿,我发现如果号码是0
我的申请不起作用,但这应该是有效号码(应该是> = 0)。问题是0
是False
。
我应该将其更改为:
if options.number is not None:
还是更复杂的东西?
答案 0 :(得分:4)
在Python中,整数可以用作布尔值,而任何非零都可以解析为True
和0
到False
。因此,如果您要检查是否设置了选项--number
,则必须检查None
(这意味着未设置该选项)。
所以:
if options.number is not None:
非常好。
答案 1 :(得分:2)
另外,考虑使用argparse模块而不是optparse,因为后者在Python 2.7之后已被弃用。 argparse文档的最后一部分是关于升级optparse代码:
http://docs.python.org/library/argparse.html
我不知道它如何解决你的特殊问题。