1

タイトルは紛らわしいかもしれませんが、これ以上の説明は思いつきません。基本的に、オプションの引数の束を持ついくつかの入力ファイルで動作するプログラムがあります。私のプログラムでは、入力ファイルは必須です。そこで、次のようなパーサーを書きました。

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 も試してみましたが、私の知識不足のためか、思うように動作させることができませんでした。

4

0 に答える 0