1

オプションの --list-something オプションを解析する python オプション パーサーがあります。また、 --list-something オプションにオプションの引数 (オプション) を持たせたい

--list-something が指定された場合だけでなく、引数を使用してdefault="simple"もここでは機能しません。それ以外の場合は常に simple がデフォルトになります。

from optparse import OptionParser, OptionGroup
parser = OptionParser()
options = OptionGroup(parser, "options")
options.add_option("--list-something",
                   type="choice",
                   choices=["simple", "detailed"],
                   help="show list of available things"
                  )
parser.add_option_group(options)
opts, args = parser.parse_args()
print opts, args

上記のコードはこれを生成しています:

[jens@ca60c173 ~]$ python main.py --list-something simple
{'list_something': 'simple'} []
[jens@ca60c173 ~]$ python main.py --list-something 
Usage: main.py [options]

main.py: error: --list-something option requires an argument
[jens@ca60c173 ~]$ python main.py 
{'list_something': None} []

しかし、私はこれが起こることを望みます:

[jens@ca60c173 ~]$ python main.py --list-something simple
{'list_something': 'simple'} []
[jens@ca60c173 ~]$ python main.py --list-something 
{'list_something': 'simple'} []
[jens@ca60c173 ~]$ python main.py 
{'list_something': None} []

Python 2.4 から 3.0 まで (3.0 は含まれていません) ですぐに使えるものが欲しいです。

argparse は python 2.7 でのみ導入されたので、これは私が使用できるものではありません。

4

2 に答える 2

1

Optparseには、これを簡単に行うためのオプションがありません。代わりに、オプションのカスタムコールバックを作成する必要があります。オプションが解析されるとコールバックがトリガーされます。その時点で、残りの引数をチェックして、ユーザーがオプションの引数を指定したかどうかを確認できます。

ドキュメントのカスタムコールバックセクション、特にコールバックの例6:変数引数を確認してください。

于 2012-10-15T15:07:03.537 に答える
0

Python の Optparser にはデフォルトはありません。
ただし、次を使用できます-

# show help as default
if len(sys.argv) == 1:
  os.system(sys.argv[0] + " -h")
  exit()

-hこれにより、オプションを指定して同じスクリプトが実行され、終了します。
注意してください - sys モジュールをインポートする必要があります。

于 2016-12-18T10:22:52.640 に答える