この引数は、両方のパーサー(メインパーサーとサブコマンドパーサー)に簡単に追加できます。
import argparse
main = argparse.ArgumentParser()
subparser = main.add_subparsers().add_parser('test')
for p in [main,subparser]:
p.add_argument('--arg', action='store_true')
print main.parse_args('--arg test'.split()).arg
print main.parse_args('test --arg'.split()).arg
編集:@hpauljがコメントで指摘したように、コンストラクターまたはメソッドにparents
渡すことができる引数もあります。この値には、新しいパーサーのベースとなるパーサーをリストできます。ArgumentParser
add_parser
import argparse
base = argparse.ArgumentParser(add_help=False)
base.add_argument('--arg', action='store_true')
main = argparse.ArgumentParser(parents=[base])
subparser = main.add_subparsers().add_parser('test', parents=[base])
print main.parse_args('--arg test'.split()).arg
print main.parse_args('test --arg'.split()).arg
その他の例/ドキュメント:
Pythonでコマンドライン引数を指定する最良の方法を探しています。一部のパラメーターは一部のオプションで必須であり、一部のパラメーターは他のオプションで必須です
Python argparse-複数のサブパーサーに引数を追加します(この質問がこれと重複しすぎていないかどうかはわかりません)
http://docs.python.org/dev/library/argparse.html#parents