argparse pythonモジュールのドキュメントは、確かに優れていますが、私の小さな初心者の頭脳が今理解するには多すぎます。コマンドラインで計算したり、画面の書式設定行をいじったり、オプション文字を変更したりする必要はありません。私がやりたいのは、「argがAの場合、これを実行し、Bがそれを実行し、上記のいずれもヘルプを表示せずに終了する場合」です。
16 に答える
これが私がargparse
(複数の引数で)それを行う方法です:
parser = argparse.ArgumentParser(description='Description of your program')
parser.add_argument('-f','--foo', help='Description for foo argument', required=True)
parser.add_argument('-b','--bar', help='Description for bar argument', required=True)
args = vars(parser.parse_args())
args
引数を含む辞書になります:
if args['foo'] == 'Hello':
# code here
if args['bar'] == 'World':
# code here
あなたの場合、引数を1つだけ追加してください。
元の質問に対する私の理解は2つあります。まず、可能な限り単純なargparseの例に関して、私はここでそれを見たことがないことに驚いています。もちろん、非常に単純であるために、それはほとんど電力がないすべてのオーバーヘッドでもありますが、それはあなたが始めるかもしれません。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("a")
args = parser.parse_args()
if args.a == 'magic.name':
print 'You nailed it!'
しかし、この位置論は今や必要です。このプログラムを呼び出すときに省略した場合、引数が欠落しているというエラーが発生します。これは、元の質問の2番目の部分につながります。Matt Wilkieは、名前付きラベル(--optionラベル)のない単一のオプション引数を必要としているようです。私の提案は、上記のコードを次のように変更することです。
...
parser.add_argument("a", nargs='?', default="check_string_for_empty")
...
if args.a == 'check_string_for_empty':
print 'I can tell that no argument was given and I can deal with that here.'
elif args.a == 'magic.name':
print 'You nailed it!'
else:
print args.a
よりエレガントな解決策があるかもしれませんが、これは機能し、最小限です。
ドキュメントはかなり良いですが、argparse
明白ではないかもしれないいくつかの有用な詳細を省略しています。(@Diego Navarroはすでにこのいくつかについて言及していますが、彼の答えを少し拡張してみます。)基本的な使用法は次のとおりです。
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--my-foo', default='foobar')
parser.add_argument('-b', '--bar-value', default=3.14)
args = parser.parse_args()
返されるオブジェクトparse_args()
は「名前空間」オブジェクトです。コマンドライン引数にちなんでメンバー変数に名前が付けられているオブジェクトです。Namespace
オブジェクトは、引数とそれに関連付けられた値にアクセスする方法です。
args = parser.parse_args()
print (args.my_foo)
print (args.bar_value)
argparse
(変数に名前を付けるときは、引数名の「-」をアンダースコアに置き換えることに注意してください。)
多くの場合、引数を値をとらないフラグとして使用することをお勧めします。次のようにargparseに追加できます。
parser.add_argument('--foo', action='store_true')
parser.add_argument('--no-foo', action='store_false')
上記は、値がTrueの「foo」という名前の変数と値がFalseの「no_foo」という名前の変数をそれぞれ作成します。
if (args.foo):
print ("foo is true")
if (args.no_foo is False):
print ("nofoo is false")
引数を追加するときに「必須」オプションを使用できることにも注意してください。
parser.add_argument('-o', '--output', required=True)
そうすれば、コマンドラインでこの引数を省略すると、引数がargparse
欠落していることがわかり、スクリプトの実行が停止します。
最後に、関数を使用して引数のdict構造を作成することが可能であることに注意してくださいvars
。そうすることで、作業が楽になります。
args = parser.parse_args()
argsdict = vars(args)
print (argsdict['my_foo'])
print (argsdict['bar_value'])
ご覧のとおりvars
、引数名をキーとして、その値をer、valuesとしてdictを返します。
他にもたくさんのオプションやできることがありますが、これは最も重要で一般的な使用シナリオをカバーするはずです。
Mattはargparseの位置パラメーターについて質問していますが、Pythonのドキュメントにはこの点が欠けていることに同意します。〜20の奇数ページには、位置パラメータの解析と使用の両方を示す単一の完全な例はありません。
ここにある他の回答はいずれも、位置パラメータの完全な例を示していないため、完全な例を次に示します。
# tested with python 2.7.1
import argparse
parser = argparse.ArgumentParser(description="An argparse example")
parser.add_argument('action', help='The action to take (e.g. install, remove, etc.)')
parser.add_argument('foo-bar', help='Hyphens are cumbersome in positional arguments')
args = parser.parse_args()
if args.action == "install":
print("You asked for installation")
else:
print("You asked for something other than installation")
# The following do not work:
# print(args.foo-bar)
# print(args.foo_bar)
# But this works:
print(getattr(args, 'foo-bar'))
私を驚かせたのは、argparseが名前付き引数「--foo-bar」を「foo_bar」に変換することですが、「foo-bar」という名前の位置パラメーターは「foo-bar」のままであるため、プログラムで使用してください。
私の例の終わり近くにある2行に注意してください。どちらも、foo-barの位置パラメータの値を取得するためには機能しません。最初のものは明らかに間違っています(算術式args.fooマイナスバーです)が、2番目のものも機能しません:
AttributeError: 'Namespace' object has no attribute 'foo_bar'
foo-bar
この属性を使用する場合getattr
は、私の例の最後の行にあるように、を使用する必要があります。クレイジーなのはdest=foo_bar
、プロパティ名をアクセスしやすい名前に変更しようとすると、非常に奇妙なエラーメッセージが表示されることです。
ValueError: dest supplied twice for positional argument
上記の例の実行方法は次のとおりです。
$ python test.py
usage: test.py [-h] action foo-bar
test.py: error: too few arguments
$ python test.py -h
usage: test.py [-h] action foo-bar
An argparse example
positional arguments:
action The action to take (e.g. install, remove, etc.)
foo-bar Hyphens are cumbersome in positional arguments
optional arguments:
-h, --help show this help message and exit
$ python test.py install foo
You asked for installation
foo
この投稿に触発されたさらに別の要約の紹介。
import argparse
# define functions, classes, etc.
# executes when your script is called from the command-line
if __name__ == "__main__":
parser = argparse.ArgumentParser()
#
# define each option with: parser.add_argument
#
args = parser.parse_args() # automatically looks at sys.argv
#
# access results with: args.argumentName
#
引数は、次の組み合わせで定義されます。
parser.add_argument( 'name', options... ) # positional argument
parser.add_argument( '-x', options... ) # single-char flag
parser.add_argument( '-x', '--long-name', options... ) # flag with long name
一般的なオプションは次のとおりです。
- ヘルプ:使用される場合のこの引数の説明
--help
。 - default:argが省略された場合のデフォルト値。
- 次のように入力します:またはを期待する
float
場合int
(それ以外の場合はstr
)。 - dest:フラグに別の名前を付けます(例
'-x', '--long-name', dest='longName'
)。
注:デフォルト--long-name
では、args.long_name
- アクション:特定の引数の特別な処理用
store_true, store_false
:ブール引数の場合
'--foo', action='store_true' => args.foo == True
store_const
:オプションで使用するconst
'--foo', action='store_const', const=42 => args.foo == 42
count
:繰り返しオプションの場合./myscript.py -vv
'-v', action='count' => args.v == 2
append
:繰り返しオプションの場合./myscript.py --foo 1 --foo 2
'--foo', action='append' => args.foo == ['1', '2']
- required:フラグが必要な場合、または位置引数が必要ない場合。
- nargs:N個の引数をキャプチャするフラグの場合
./myscript.py --foo a b => args.foo = ['a', 'b']
- 選択肢:可能な入力を制限します(文字列のリスト、または場合はintとして指定します
type=int
)。
PythonHOWTOのArgparseチュートリアルに注意してください。これは、次のような最も基本的な例から始まります。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
args = parser.parse_args()
print(args.square**2)
そして、より基本的でないものに進みます。
質問内容のように、オプションの選択肢が事前定義されている例があります。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("square", type=int,
help="display a square of a given number")
parser.add_argument("-v", "--verbosity", type=int, choices=[0, 1, 2],
help="increase output verbosity")
args = parser.parse_args()
answer = args.square**2
if args.verbosity == 2:
print("the square of {} equals {}".format(args.square, answer))
elif args.verbosity == 1:
print("{}^2 == {}".format(args.square, answer))
else:
print(answer)
これが、主に@DMHのおかげで私の学習プロジェクトで思いついたものです...
デモコード:
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--flag', action='store_true', default=False) # can 'store_false' for no-xxx flags
parser.add_argument('-r', '--reqd', required=True)
parser.add_argument('-o', '--opt', default='fallback')
parser.add_argument('arg', nargs='*') # use '+' for 1 or more args (instead of 0 or more)
parsed = parser.parse_args()
# NOTE: args with '-' have it replaced with '_'
print('Result:', vars(parsed))
print('parsed.reqd:', parsed.reqd)
if __name__ == "__main__":
main()
これは進化した可能性があり、オンラインで入手できます:command-line.py
このコードにワークアウトを与えるスクリプト:command-line-demo.sh
コードファイル:argparseDemo.py
単純:一般的なケース
- name(abbr、full)、助けを借りて
import argparse argParser = argparse.ArgumentParser() argParser.add_argument("-n", "--name", help="your name") args = argParser.parse_args() print("args=%s" % args) print("args.name=%s" % args.name)
- 電話
python argparseDemo.py -n Crifan
python argparseDemo.py --name Crifan
- 出力:
args=Namespace(name='Crifan')
およびargs.name=Crifan
- 電話
- タイプ
argParser.add_argument("-a", "--age", type=int, help="your current age") print("type(args.age)=%s" % type(args.age))
- 電話:
python argparseDemo.py --age 30
- 出力:
type(args.age)=<class 'int'>
およびargs.age=30
- 電話:
- 必要
argParser.add_argument("-a", "--age", required=True, type=int, help="your current age")
- 電話:
python argparseDemo.py
- 出力:エラー
argparseDemo.py: error: the following arguments are required: -a/--age
- 電話:
- デフォルト
argParser.add_argument("-a", "--age", type=int, default=20, help="your current age. Default is 20")
- 電話:
python argparseDemo.py
- 出力:
args.age=20
- 電話:
- 選択肢
argParser.add_argument("-f", "--love-fruit", choices=['apple', 'orange', 'banana'], help="your love fruits")
- 電話:
python argparseDemo.py -f apple
- 出力:
args=Namespace(love_fruit='apple')
およびargs.love_fruit=apple
- 電話:
- マルチ引数
argParser.add_argument("-f", "--love-fruit", nargs=2, help="your love fruits")
- 電話:
python argparseDemo.py -f apple orange
- 出力:
args.love_fruit=['apple', 'orange']
- 電話:
詳細
最も簡単:-x
コード:
import argparse argParser = argparse.ArgumentParser() argParser.add_argument("-a") # most simple -> got args.a, type is `str` args = argParser.parse_args() print("args.a=%s" % args.a)
使用法=コマンドラインで実行
python argparseDemo.py -a 30
- また:
./argparseDemo.py -a 30
- makeure
argparseDemo.py
は実行可能です- そうでない場合は、追加します。
chmod +x argparseDemo.py
- そうでない場合は、追加します。
- makeure
- また:
出力
args.a=30
ノート
- デフォルトのタイプは
str
argParser.add_argument("-a")
==argParser.add_argument("-a", type=str)
print("type(args.a)=%s" % type(args.a))
->type(args.a)=<class 'str'>
args
タイプはNamespace
print("type(args)=%s" % type(args))
->type(args)=<class 'argparse.Namespace'>
args
値はNamespace(a='30')
print("args=%s" % args)
->args=Namespace(a='30')
- 電話/使用できるように
args.a
- デフォルトのタイプは
パラメータ名
完全なパラメータ名:--xxx
- コード
argParser.add_argument("-a", "--age")
- 利用方法
python argparseDemo.py -a 30
- また:
python argparseDemo.py --age 30
- また:
- 解析された値を取得します:
args.age
- 注:NOT
args.a
、およびNOTargs.a
- 注:NOT
複数の単語を含む完全なパラメータ名:--xxx-yyy
- コード
argParser.add_argument("-a", "--current-age")
- 解析された値を取得します:args。現在の年齢
ヘルプの説明を追加:help
- コード
argParser.add_argument("-a", help="your age") # with help
- 出力
- 使用
--help
は説明を見ることができます python argparseDemo.py --help usage: argparseDemo.py [-h] [-a A] optional arguments: -h, --help show this help message and exit -a A your age
- 使用
パラメータタイプを指定します。type
- コード
argParser.add_argument("-a", type=int) # parsed arg is `int`, not default `str`
- 出力
print("type(args.a)=%s" % type(args.a))
->type(args.a)=<class 'int'>
print("args=%s" % args)
->args=Namespace(a=30)
デフォルト値を追加します。default
- コード
argParser.add_argument("-a", type=int, default=20) # if not pass a, a use default value: 20
- 効果
- 利用方法:
python argparseDemo.py
- 出力:
print("args.age=%s" % args.age)
->args=Namespace(a=20)
- 利用方法:
plac(ラッパーアラウンド)を使用することもできますargparse
。
ボーナスとして、それはきちんとしたヘルプ命令を生成します-以下を参照してください。
スクリプト例:
#!/usr/bin/env python3
def main(
arg: ('Argument with two possible values', 'positional', None, None, ['A', 'B'])
):
"""General help for application"""
if arg == 'A':
print("Argument has value A")
elif arg == 'B':
print("Argument has value B")
if __name__ == '__main__':
import plac
plac.call(main)
出力例:
引数が提供されていません- example.py
:
usage: example.py [-h] {A,B}
example.py: error: the following arguments are required: arg
予期しない引数が指定されました- example.py C
:
usage: example.py [-h] {A,B}
example.py: error: argument arg: invalid choice: 'C' (choose from 'A', 'B')
正しい引数が提供されました- example.py A
:
Argument has value A
フルヘルプメニュー(自動的に生成)- example.py -h
:
usage: example.py [-h] {A,B}
General help for application
positional arguments:
{A,B} Argument with two possible values
optional arguments:
-h, --help show this help message and exit
簡単な説明:
引数の名前は通常、パラメーター名(arg
)と同じです。
パラメーターの後のタプル注釈にarg
は、次の意味があります。
- 説明(
Argument with two possible values
) - 引数のタイプ-「フラグ」、「オプション」、または「位置」のいずれか(
positional
) - 略語(
None
) - 引数値のタイプ-例:フロート、文字列(
None
) - 制限された選択肢のセット(
['A', 'B']
)
ドキュメンテーション:
placの使用の詳細については、その優れたドキュメントを確認してください。
他の人が述べたことに追加するには:
私は通常、「dest」パラメーターを使用して変数名を指定してから、「globals()。update()」を使用してそれらの変数をグローバル名前空間に配置するのが好きです。
使用法:
$ python script.py -i "Hello, World!"
コード:
...
parser.add_argument('-i', '--input', ..., dest='inputted_variable',...)
globals().update(vars(parser.parse_args()))
...
print(inputted_variable) # Prints "Hello, World!"
私はすべての例と答えを調べましたが、何らかの形で彼らは私のニーズに対応していませんでした。それで、私はもっと助けが必要なシナリオを彼女にリストします、そしてこれがアイデアをもっと説明できることを願っています。
初期の問題
それを処理するファイルを取得するツールを開発する必要があり、ツールを構成するために使用するオプションの構成ファイルが必要です。
だから私が必要なのは次のようなものです
mytool.py file.text -config config-file.json
ソリューション
これがソリューションコードです
import argparse
def main():
parser = argparse.ArgumentParser(description='This example for a tool to process a file and configure the tool using a config file.')
parser.add_argument('filename', help="Input file either text, image or video")
# parser.add_argument('config_file', help="a JSON file to load the initial configuration ")
# parser.add_argument('-c', '--config_file', help="a JSON file to load the initial configuration ", default='configFile.json', required=False)
parser.add_argument('-c', '--config', default='configFile.json', dest='config_file', help="a JSON file to load the initial configuration " )
parser.add_argument('-d', '--debug', action="store_true", help="Enable the debug mode for logging debug statements." )
args = parser.parse_args()
filename = args.filename
configfile = args.config_file
print("The file to be processed is", filename)
print("The config file is", configfile)
if args.debug:
print("Debug mode enabled")
else:
print("Debug mode disabled")
print("and all arguments are: ", args)
if __name__ == '__main__':
main()
アイデアを示すために、複数の拡張機能でソリューションを示します
最初のラウンド:引数を一覧表示します
すべての入力を必須入力としてリストし、2番目の引数が
parser.add_argument('config_file', help="a JSON file to load the initial configuration ")
このツールのヘルプコマンドを取得すると、次の結果が得られます。
(base) > python .\argparser_example.py -h
usage: argparser_example.py [-h] filename config_file
This example for a tool to process a file and configure the tool using a config file.
positional arguments:
filename Input file either text, image or video
config_file a JSON file to load the initial configuration
optional arguments:
-h, --help show this help message and exit
そして私がそれを次のように実行すると
(base) > python .\argparser_example.py filename.txt configfile.json
結果は
The file to be processed is filename.txt
The config file is configfile.json
and all arguments are: Namespace(config_file='configfile.json', filename='filename.txt')
しかし、設定ファイルはオプションである必要があります、私はそれを引数から削除しました
(base) > python .\argparser_example.py filename.txt
結果は次のようになります。
usage: argparser_example.py [-h] filename config_file
argparser_example.py: error: the following arguments are required: c
これは、ツールに問題があることを意味します
第2ラウンド:最適化する
それで、それをオプションにするために、私はプログラムを次のように変更しました
parser.add_argument('-c', '--config', help="a JSON file to load the initial configuration ", default='configFile.json', required=False)
ヘルプの結果は
usage: argparser_example.py [-h] [-c CONFIG] filename
This example for a tool to process a file and configure the tool using a config file.
positional arguments:
filename Input file either text, image or video
optional arguments:
-h, --help show this help message and exit
-c CONFIG, --config CONFIG
a JSON file to load the initial configuration
だから私がプログラムを実行するとき
(base) > python .\argparser_example.py filename.txt
結果は
The file to be processed is filename.txt
The config file is configFile.json
and all arguments are: Namespace(config_file='configFile.json', filename='filename.txt')
のような引数で
(base) > python .\argparser_example.py filename.txt --config_file anotherConfig.json
結果は次のようになります
The file to be processed is filename.txt
The config file is anotherConfig.json
and all arguments are: Namespace(config_file='anotherConfig.json', filename='filename.txt')
ラウンド3:機能強化
変数名をそのままにしてフラグ名をから--config_file
に 変更するには、次のよう--config
にコードを変更します。dest='config_file'
parser.add_argument('-c', '--config', help="a JSON file to load the initial configuration ", default='configFile.json', dest='config_file')
コマンドは次のようになります
(base) > python .\argparser_example.py filename.txt --config anotherConfig.json
デバッグモードフラグのサポートを追加するには、ブール値のデバッグフラグをサポートするフラグを引数に追加する必要があります。それを実装するために、私は以下を追加しました:
parser.add_argument('-d', '--debug', action="store_true", help="Enable the debug mode for logging debug statements." )
ツールコマンドは次のようになります。
(carnd-term1-38) > python .\argparser_example.py image.jpg -c imageConfig,json --debug
結果は
The file to be processed is image.jpg
The config file is imageConfig,json
Debug mode enabled
and all arguments are: Namespace(config_file='imageConfig,json', debug=True, filename='image.jpg')
これは初めてですが、PythonとPowershellを組み合わせ、このテンプレートを使用して、詳細で優れたPythonコマンドライン引数–実際のPythonに触発されています
内でできることはたくさんありますinit_argparse()
。ここでは、最も単純なシナリオについて説明します。
import argparse
- パターンを使用
if __name__ == "__main__": main()
して端末から実行する main()
すべてのパラメータを持たない関数内の引数を解析しますinit_argparse()
関数 を定義する- を呼び出してパーサーオブジェクトを作成します
argparse.ArgumentParser()
- 1つ以上の引数を宣言する
parser.add_argument("--<long_param_name>")
- returパーサー
- を呼び出してパーサーオブジェクトを作成します
args
を呼び出してオブジェクトを作成することにより、引数を解析しますparser.parse_args()
param1
、、param2
..で適切な関数を定義します。- オブジェクト
function_proper
の属性として割り当てられているパラメータを使用して呼び出しますargs
- 例: `function_proper(param1 = args.param1、param2 = args.param2)
- シェル内で、名前付き引数を使用してモジュールを呼び出します。
- 例えば
python foobar.py --param1="foo" --param2=="bar"
- 例えば
#file: foobar.py
import argparse
def function_proper(param1, param2):
#CODE...
def init_argparse() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser()
parser.add_argument("--param1")
parser.add_argument("--param2")
return parser
def main() -> None:
parser = init_argparse()
args = parser.parse_args()
function_proper(param1=args.param1, param2=args.param2)
if __name__ == "__main__":
main()
>>> python .\foobar.py --param1="foo" --param2=="bar"
argparseを使用し、「-h」/「-help」スイッチを修正して独自の個人コードのヘルプ命令を表示する非常に簡単な方法は、デフォルトのヘルプをFalseに設定することです。また、必要な数の.add_argumentsを追加することもできます。 :
import argparse
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument('-h', '--help', action='help',
help='To run this script please provide two arguments')
parser.parse_args()
実行:python test.py -h
出力:
usage: test.py [-h]
optional arguments:
-h, --help To run this script please provide two arguments
引数「A」と「B」が定位置であるかオプションであるかを明確にしていないので、両方を組み合わせます。
デフォルトでは、位置引数が必要です。与えない場合は、「与えられたいくつかの引数」がスローされます。これは、名前で指定されたオプションの引数には当てはまりません。このプログラムは、デフォルトで数値を取り、その正方形を返します。キューブオプションを使用すると、そのキューブを返します。
import argparse
parser = argparse.ArgumentParser('number-game')
parser.add_argument(
"number",
type=int,
help="enter a number"
)
parser.add_argument(
"-c", "--choice",
choices=['square','cube'],
help="choose what you need to do with the number"
)
# all the results will be parsed by the parser and stored in args
args = parser.parse_args()
# if square is selected return the square, same for cube
if args.c == 'square':
print("{} is the result".format(args.number**2))
elif args.c == 'cube':
print("{} is the result".format(args.number**3))
else:
print("{} is not changed".format(args.number))
利用方法
$python3 script.py 4 -c square
16
ここでは、オプションの引数が価値を持っています。フラグのように使用したい場合は、それも可能です。したがって、正方形に-sを使用し、立方体に-cを使用して、action="store_true"を追加することで動作を変更します。使用時のみtrueに変更されます。
parser.add_argument(
"-s", "--square",
help="returns the square of number",
action="store_true"
)
parser.add_argument(
"-c", "--cube",
help="returns the cube of number",
action="store_true"
)
したがって、条件付きブロックを次のように変更できます。
if args.s:
print("{} is the result".format(args.number**2))
elif args.c:
print("{} is the result".format(args.number**3))
else:
print("{} is not changed".format(args.number))
利用方法
$python3 script.py 4 -c
64
既存の回答に加えて、十分に怠惰な場合は、protoargsと呼ばれるコード生成ツールを使用することができます。構成から引数パーサーを生成します。Pythonの場合、argparseを使用します。
オプションのAおよびBを使用した構成:
syntax = "proto2";
message protoargs
{
optional string A = 1; // A param description
optional string B = 2; // B param description
}//protoargs
必要なAとBを使用した構成:
syntax = "proto2";
message protoargs
{
required string A = 1; // A param description
required string B = 2; // B param description
}//protoargs
位置AおよびBの構成:
syntax = "proto2";
message protoargs
{
required string A = 1; // A param description
required string B = 2; // B param description
}//protoargs
message protoargs_links
{
}//protoargs_links
今実行する必要があるのは次のとおりです。
python ./protoargs.py -i test.proto -o . --py
そしてそれを使用してください(ここで他の例を取ることが可能です):
import sys
import test_pa
class ArgsParser:
program = "test"
description = "Simple A and B parser test."
def parse(self, argv):
self.config = test_pa.parse(self.program, self.description, argv)
def usage(self):
return test_pa.usage(self.program, self.description)
if __name__ == "__main__":
parser = ArgsParser()
if len(sys.argv) == 1:
print(parser.usage())
else:
parser.parse(sys.argv[1:])
if parser.config.A:
print(parser.config.A)
if parser.config.B:
print(parser.config.B)
さらに必要な場合は、構成を変更し、パーサーを再生成し、更新されたparser.configを使用します。
UPD:ルールで述べたように、これは私自身のプロジェクトであることを指定する必要があります
最も簡単な答え!
PSargparseのドキュメントを書いた人は愚かです
Pythonコード:
import argparse
parser = argparse.ArgumentParser(description='')
parser.add_argument('--o_dct_fname',type=str)
parser.add_argument('--tp',type=str)
parser.add_argument('--new_res_set',type=int)
args = parser.parse_args()
o_dct_fname = args.o_dct_fname
tp = args.tp
new_res_set = args.new_res_set
実行中のコード
python produce_result.py --o_dct_fname o_dct --tp father_child --new_res_set 1