私は2つの引数を取りPythonスクリプト、およびいくつかのオプションを書いています:Pythonのargparseヘルプのようなオプション
scriptname [-h] [-l] [-q|-d] arg1 arg2
-q
(静かな)と-d
(デバッグ)オプションは、冗長レベルを変更し、-h
オプションは、argparseによって自動的に作成されるヘルプオプションです。
は、私はそれが(そうでない場合は必須)引数が存在することを必要とし、(-h
オプションとは異なる)、いくつかの有用な情報を表示されませんように-h
オプションと同様に動作する-l
(リスト)オプションをしたいと思います。実際には、このスクリプトは、次の3つの方法で呼び出すことができることを意味します:引数をオプションに
- :
scriptmane [-q|-d] arg1 arg2 scriptname -l scriptname -h
2つの方法が前方になります(= NARGSと「?」)
-l
og-h
オプションが指定されていないすべての場合に2つの引数があることを確認するコードを追加します。 - カスタムアクションクラスを作成します(詳細についてはわかりません)。
ただし、ヘルプオプションから「このオプションはすべて必要です」という動作を継承するより簡単な方法が必要です。 (samwyseの回答に基づいて)
ソリューション:
_HelpAction()
argparse.py中に基づき:
class _ListAction(argparse.Action):
def __init__(self,
option_strings,
dest=argparse.SUPPRESS,
default=argparse.SUPPRESS,
help=None):
super(_ListAction, self).__init__(
option_strings=option_strings,
dest=dest,
default=default,
nargs=0,
help=help)
def __call__(self, parser, namespace, values, option_string=None):
print_list()
parser.exit()
、その後、パーサのセットアップ時:
parser.add_argument('-l', '--list', action=_ListAction,
help="List all available cases")
まさに私が考えていたものだが、私のスマートフォンではコード化が難しかった。 :) – samwyse