1

我的程序中有以下几行

parser = OptionParser()

parser.add_option("-t","--TIMEOUT", dest="timeout", type="int",  help="timeout in seconds")

if parser.has_option("-t") and options.timeout<=0:
   print "Timeout if specified must be greater than zero"
   sys.exit(CLI_ERROR)

上面的打印语句正在打印,因为即使没有为此脚本指定 -t 选项, parser.has_option("-t") 的评估结果也为 true。我在这里错过了什么吗?在此先感谢您的帮助。

4

2 回答 2

2

您必须首先实际解析选项。parser.has_option只是检查解析器是否理解给定的选项(它确实,因为你曾经add_option添加它)。

因此,使用

from optparse import OptionParser

parser = OptionParser()

parser.add_option("-t","--TIMEOUT", dest="timeout", type="int",  help="timeout in seconds")

options, args = parser.parse_args()
if options.timeout is not None and options.timeout <= 0:
    print "Timeout if specified must be greater than zero"
    sys.exit(CLI_ERROR)
于 2012-10-18T19:10:56.037 回答
1
(options, args) = parser.parse_args()
if options.timeout is not None and options.timeout <=0 :
.....

你应该看看 docopt https://github.com/docopt/docopt。非常适合命令行界面

于 2012-10-18T19:09:52.547 回答