2

次のようないくつかのコードでは、

    opts, args = getopt.getopt(sys.argv[1:], "c:", ...
    opts の o、v の場合:
...
        elif o in ("-c", "--%s" % checkString):
            kCheckOnly = 真
            clientTemp = v

-c の後にパラメーターを指定しないと、次のようなエラー メッセージが表示されます。

トレースバック (最新の呼び出しが最後):
  ファイル「niFpgaTimingViolationMain.py」の 100 行目
    opts, args = getopt.getopt(sys.argv[1:], "hdc:t:",[helpString, debugString, checkString, twxString])
  ファイル "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/getopt.py"、91 行目、getopt 内
    opts, args = do_shorts(opts, args[0][1:], shortopts, args[1:])
  ファイル "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/getopt.py"、195 行目、do_shorts 内
    オプト)
getopt.GetoptError: オプション -c には引数が必要です

このエラーをキャッチし、それを処理してこのようなものを印刷する方法はありますか? コードを try/except でラップするだけでは機能しないようです。

エラー: -c オプションの後にファイル名を指定するのを忘れました

4

2 に答える 2

3

getopt.GetoptErrorをキャッチして、「opt」属性と「msg」属性を自分で確認できます。

試す:
    opts、args = getopt.getopt(sys.argv [1:]、 "c:"、..。
getopt.GetoptErrorを除く、e:
    e.opt =='c'および'がe.msgの引数'を必要とする場合:
        print >> sys.stderr、'エラー:-cオプションの後にファイル名を指定するのを忘れました'
        sys.exit(-1)
于 2010-04-06T14:56:22.737 に答える
3

正解は、「自分でロール」するのではなく、OptionParserモジュールを使用することです。

于 2010-04-06T14:58:24.697 に答える