0

OptionParser選択肢のリストを受け取るオプションがあります。

#!/usr/bin/python

from optparse import OptionParser

def main():
    parser = OptionParser(usage="Usage: foo")  
    parser.add_option('-e', '--env',
                  type='choice',
                  action='store',
                  dest='environment',
                  choices=['prod', 'staging', 'test', 'dev'],
                  default='dev',
                  help='Environment to run on',)


if __name__ == '__main__':
    main()

--helpコマンドを実行すると、次のように表示されます。

Usage: foo

Options:
  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -e ENVIRONMENT, --env=ENVIRONMENT
                        Environment to run on

私の選択肢のリストが自動的に環境のヘルプ テキストに表示されるようにしたいと思います (できればデフォルトでも)。choicesヘルプ テキストの生成に使用するオブジェクトにアクセスする方法はありますか?

4

2 に答える 2

2

簡単な方法の 1 つは、次のようなものです。

choices = ['prod', 'staging', 'test', 'dev'] 
help = "Environment to run on (choose from: {!r})".format(choices)
parser.add_option('-e', '--env',
                  type='choice',
                  action='store',
                  dest='environment',
                  choices=choices,
                  default='dev',
                  help=help,)

これは以下を生成します:

Usage: foo

Options:
  -h, --help            show this help message and exit
  -e ENVIRONMENT, --env=ENVIRONMENT
                        Environment to run on (choose from: ['prod',
                        'staging', 'test', 'dev'])

helpヘルプをよりきれいに見せたい場合は、課題にもう少し力を入れることができます!

于 2015-02-04T16:39:11.307 に答える
2

%defaultヘルプ テキストを入力すると、そのオプションのデフォルト値に展開されます ( docsを参照)。

選択肢については、残念ながら、それらを別のリストに入れて手動で追加する必要があります。ただし、説明を追加することはできます。

env_choices = [
  ('prod', 'production; use caution!'),
  ('test', 'used by testers, do not break')
  ('dev', 'developers\' safe playgroud')
]

# ...
choices = [name for name, _ in env_choices],
help = "Environment (defaults to %default); one of:\n %s" % (
         "\n\t".join(name + ": " + descr for name, descr in env_choices)  
       )
于 2015-02-04T16:42:05.187 に答える