3

バイパス/処理を一般的なオプションにするクリーンな方法があるかどうか考えてみてください。optparse-XXX

私の場合は、lessアプリケーションの出力エントリを後に定義された数に制限するための同様のオプションを提供したいアプリケーションです。-

例えば

myapp.py list -10

sys.argvエラーが発生しないようにdictを上書きoptparseして、カスタム引数を手動で解析/削除できると思いますが、これがoptparse libが予測し、それを行うためのより良い方法を提供する場合であるかどうか疑問に思っています。

4

1 に答える 1

0

argparse では、オプションの位置整数引数を定義できます。負の値は、オプションを与えるようにユーザーに見えます。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('limit', type=int, nargs='?')
args = parser.parse_args()
if args.limit is not None:
    print "Limiting to %d." % -args.limit

この場合、デフォルトのヘルプ テキストは適切ではありませんが、metavarキーワード引数 toadd_argumentを使用して調整できます"-n"

これを optparse で行うには、見栄えの悪い方法しか思いつきません。基本的に、数字を開始できる数字ごとに個別のオプションを定義します。

from optparse import OptionParser
parser = OptionParser()
parser.add_option("-1")
parser.add_option("-2")
options,args = parser.parse_args()
if options.__dict__["1"] is not None:
    print "Your number was %d." % (int("1"+options.__dict__["1"]))
elif options.__dict__["2"] is not None:
    print "Your number was %d." % (int("2"+options.__dict__["2"]))

9までのすべての数字についても同様です。また、0を考慮する必要があるかどうかについても考えてください...

于 2011-11-16T21:34:25.397 に答える