Python の argparse で、サブコマンドを必須の引数にするにはどうすればよいですか? サブコマンドが指定されていない場合に argparse がエラーになるようにしたいので、これを行います。エラー メソッドをオーバーライドして、代わりにヘルプを出力します。私は 3 つの深さでネストされたサブコマンドを持っているので、最上位レベルでゼロ引数を処理するだけの問題ではありません。
次の例では、これがそのように呼び出されると、次のようになります。
$./simple.py
$
代わりにやりたいことは、必要なサブコマンドが指定されていないことを argparse が不平を言うことです。
import argparse
class MyArgumentParser(argparse.ArgumentParser):
def error(self, message):
self.print_help(sys.stderr)
self.exit(0, '%s: error: %s\n' % (self.prog, message))
def main():
parser = MyArgumentParser(description='Simple example')
subs = parser.add_subparsers()
sub_one = subs.add_parser('one', help='does something')
sub_two = subs.add_parser('two', help='does something else')
parser.parse_args()
if __name__ == '__main__':
main()