タイトルは紛らわしいかもしれませんが、これ以上の説明は思いつきません。基本的に、オプションの引数の束を持ついくつかの入力ファイルで動作するプログラムがあります。私のプログラムでは、入力ファイルは必須です。そこで、次のようなパーサーを書きました。
test.py
from argparse import ArgumentParser
parser = ArgumentParser(prog="prog")
parser.add_argument("file", help="input file")
parser.add_argument("--debug", action="store_true", help="enable debug messages")
parser.parse_args()
簡単にするために、すべてのオプションを示しているわけではありません。ここで、入力ファイルを必要とせず、単独で実行される機能をこのプログラムに追加したいと考えています。このオプションを と呼びましょうa
。Optiona
の引数の数が不明であるか、--debug
または他のオプションが option に対して無効ですa
。したがって、以下は私のプログラムの有効な実行になります。
$ python3 test.py 入力.txt $ python3 test.py input.txt --debug $ python3 test.py -a 1 2 3
そして、これらは無効になります:
$ python3 test.py input.txt -a 1 2 3 $ python3 test.py -a 1 2 3 --debug
この行をコードに追加すると
parser.add_argument("-a", nargs="+", help="help option a")
オプションを受け入れますa
が、理解できる理由から「ファイルが必要です」と表示されます。では、目標を達成するためにコードをどのように変更すればよいでしょうか?
PS: subparser も試してみましたが、私の知識不足のためか、思うように動作させることができませんでした。