私のスクリプトでは、bazaar 実行可能ファイルをラップしようとしています。bzr 用の特定のオプションを読み取ると、スクリプトはそれに反応します。いずれにせよ、すべての引数は bzr 実行可能ファイルに渡されます。もちろん、スクリプト内で bzr が処理できるすべての引数を指定したくはありません。
では、argpase で不明な量の引数を処理する方法はありますか?
私のコードは現在次のようになっています。
parser = argparse.ArgumentParser(help='vcs')
subparsers = parser.add_subparsers(help='commands')
vcs = subparsers.add_parser('vcs', help='control the vcs',
epilog='all other arguments are directly passed to bzr')
vcs_main = vcs.add_subparsers(help='vcs commands')
vcs_commit = vcs_main.add_parser('commit', help="""Commit changes into a
new revision""")
vcs_commit.add_argument('bzr_cmd', action='store', nargs='+',
help='arugments meant for bzr')
vcs_checkout = vcs_main.add_parser('checkout',
help="""Create a new checkout of an existing branch""")
nargs オプションでは、もちろん必要な数の引数を使用できます。しかし、別の未知のオプション引数 (--fixes や --unchanged など) はありません。