1. ホーム
  2. パイソン

[解決済み】引数なしでスクリプトを呼び出したとき、Pythonのargparseでヘルプメッセージを表示する。

2022-04-16 22:54:47

質問

を使用するプログラムがあるとします。 argparse を使用して、コマンドライン引数/オプションを処理します。以下は、'help' メッセージを表示します。

./myprogram -h

または

./myprogram --help

しかし、このスクリプトを引数なしで実行しても、何も起こらない。そこで、引数なしで実行したときに、使用法のメッセージを表示させたいのです。どうすればいいのでしょうか?

どのように解決するのですか?

この回答はSteven Bethardによるものです。 Googleグループにて . Googleアカウントをお持ちでない方でもアクセスしやすいように、ここに再掲載しています。

のデフォルトの動作をオーバーライドすることができます。 error メソッドを使用します。

import argparse
import sys

class MyParser(argparse.ArgumentParser):
    def error(self, message):
        sys.stderr.write('error: %s\n' % message)
        self.print_help()
        sys.exit(2)

parser = MyParser()
parser.add_argument('foo', nargs='+')
args = parser.parse_args()


上記の解決策では error メソッドがトリガーされます。例えば test.py --blah はヘルプメッセージを表示します。 も、もし --blah は有効なオプションではありません。

引数がないときだけヘルプメッセージを表示させたい場合。 コマンドラインでは、おそらくこれがまだ最も簡単な方法です。

import argparse
import sys

parser=argparse.ArgumentParser()
parser.add_argument('foo', nargs='+')
if len(sys.argv)==1:
    parser.print_help(sys.stderr)
    sys.exit(1)
args=parser.parse_args()


注意点 parser.print_help() はデフォルトで標準出力に出力されます。として init_js が示唆するもの を使用します。 parser.print_help(sys.stderr) を使用して標準エラー出力します。