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と評価されているため、上記のprintステートメントが出力されています。私はここで何かが欠けていますか?よろしくお願いします。

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 :
.....

docopthttps://github.com/docopt/docoptをご覧ください。コマンドラインインターフェイスに最適

于 2012-10-18T19:09:52.547 に答える