スクリプトが引数なしで呼び出されたときにPython argparseでヘルプメッセージを表示する 質問する

スクリプトが引数なしで呼び出されたときにPython argparseでヘルプメッセージを表示する 質問する

コマンドライン引数/オプションを処理するために を使用するプログラムがあると仮定しますargparse。次のコードは「ヘルプ」メッセージを出力します。

./myprogram -h

または:

./myprogram --help

しかし、引数を一切指定せずにスクリプトを実行しても、何も起こりません。引数を指定せずに呼び出されたときに使用方法のメッセージを表示させたいのですが、どうすればいいでしょうか?

ベストアンサー1

この回答はスティーブン・ベタード氏によるものです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()

デフォルトではstdoutに出力されることに注意してくださいparser.print_help()init_jsは提案するparser.print_help(sys.stderr)stderr に出力するために使用します。

おすすめ記事