使用整数参数进行Optparse

时间:2012-01-05 11:37:15

标签: python optparse

我遇到了以下有趣的错误:

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)。问题是0False

我应该将其更改为:

if options.number is not None:

还是更复杂的东西?

2 个答案:

答案 0 :(得分:4)

在Python中,整数可以用作布尔值,而任何非零都可以解析为True0False。因此,如果您要检查是否设置了选项--number,则必须检查None(这意味着未设置该选项)。

所以:

if options.number is not None:

非常好。

答案 1 :(得分:2)

另外,考虑使用argparse模块而不是optparse,因为后者在Python 2.7之后已被弃用。 argparse文档的最后一部分是关于升级optparse代码:

http://docs.python.org/library/argparse.html

我不知道它如何解决你的特殊问题。