argparse.ArgumentParser() の紹介

argparse — コマンドラインオプション、引数、およびサブコマンドのパーサー

このモジュールは argparse モジュールにカプセル化されており、import argparse使用前にロード ライブラリを使用する必要があります。パラメーターをコードから分離してコードをより簡潔にし、ヘルプ マニュアルと使用法ドキュメントを自動的に生成します。ユーザーが無効なパラメーターをプログラムに渡すと、エラー メッセージが返されます。
具体例は以下のとおりです。

import argparse

def parse_args():
    parser = argparse.ArgumentParser(prog=None, usage=None, description=None, epilog=None, parents=[], formatter_class=argparse.HelpFormatter, prefix_chars='-', fromfile_prefix_chars=None, argument_default=None, conflict_handler='error', add_help=True, allow_abbrev=True, exit_on_error=True)    
    #创建解析器 
    parser.add_argument("--model_file")
    parser.add_argument("--data_file", default="./BraTS2020_Validation_data.h5")
    parser.add_argument("--labels", nargs="*")
    parser.add_argument("--modalities", nargs="*")
    parser.add_argument("--validation_file", default="./BraTS2020_Validation_ids.pkl")
    parser.add_argument("--no_label_map", action="store_true", default=False)
    parser.add_argument("--prediction_dir", default="./BraTS2020_Validation_predictions")
    parser.add_argument("--output_basename", default="{subject}.nii.gz")
    #添加解析器属性
    return parser.parse_args()
    #对解析器进行解析

パーサー属性パラメーター

prog- インタープリター名を指定します (デフォルト: os.path.basename(sys.argv[0]))。デフォルトはファイル名です。argv は sys モジュールのグローバル変数であり、sys モジュールの属性とも呼ばれます。
usageargv 自体はタイプ list のオブジェクトです。このオブジェクトが保持する最初の要素は、コマンド ラインで渡されたモジュール名 (ファイル名.py) であり、2 番目の要素 (包括的) から始まります。すべては -目的を説明する文字列です。プログラム、ユーザー割り当て可能 (デフォルト: パーサーに追加されたパラメーターから生成);
description- このプログラムの機能とその方法を簡単に説明する、パラメーター ヘルプ ドキュメントの前に表示されるテキスト。コマンドライン使用文字列usageとさまざまな引数のヘルプ メッセージ: (デフォルト: なし);
epilog- パラメータ ヘルプ ドキュメントの後に表示するテキスト (デフォルト: なし);
parents- ArgumentParser パラメータも含める必要があるオブジェクトのリスト、インタープリターのパラメーター呼び出しに使用できます。parents= 参数使用 ArgumentParser 对象的列表つまり、あるインタープリターが別のインタープリターのすべての位置とオプションの動作を呼び出してから、この記述された動作をに追加しますparents=add_help = False子インタープリターは子インタープリターを変更しません;
formatter_class- ヘルプ ドキュメントの出力形式をカスタマイズするために使用されるクラスには、次の 4 つのカテゴリがあります。

  1. formatter_class=argparse.RawDescriptionHelpFormatter:descriptionepilogが正しくフォーマットされており、コマンド ラインで自動的にラップできず、指定された値に従って出力されることを示します。
  2. formatter_class=argparse.RawTextHelpFormatter: パラメータの説明を含め、すべての種類のテキストにはスペースを残してください。ただし、複数の空白行は 1 行に置き換えられます。複数の空白行を保持したい場合は、空白行の間にスペースを追加できます。
  3. formatter_class=argparse.ArgumentDefaultsHelpFormatter: ヘルプ情報の各パラメータにデフォルト値情報を自動的に追加します.例: サンプルコードが--data_fileヘルプに表示されます(default: ./BraTS2020_Validation_data.h5).
  4. formatter_class=argparse.MetavarTypeHelpFormatter: ヘルプが表示されるとき、各パラメータの型のパラメータ名をその表示名として使用します。

prefix_chars- オプションのパラメータのプレフィックス文字のセット (デフォルト値: '-') は、'±' などに変更できます; -
fromfile_prefix_chars他のパラメータをファイルから読み取る必要がある場合、ファイルを識別するために使用されるプレフィックス文字のセット名前 (デフォルト: なし);
argument_default- パラメータのグローバル デフォルト (デフォルト: なし);
conflict_handler- 競合するオプションを解決するための戦略 (通常は不要)、同じパラメータを設定することはできません;
add_help- パーサー オプションに -h/--help を追加します (デフォルト: True);

options:
 -h, --help  show this help message and exit
 --foo FOO   foo help
#如果add_help = False,会缺失一行描述信息
options:
 --foo FOO  foo help

allow_abbrev- 省略形が明確で、種類が 1 つしかない場合 (例: インタープリターを使用する場合、パラメーター foobar と foonley を foo で参照できないため、あいまいさが生じます)、省略形の long オプション (デフォルト: True) を許可します。 -
exit_on_errorエラーが発生したときに ArgumentParser を終了させて​​エラー メッセージを表示するかどうかを決定します。(デフォルト: True)、ユーザーがエラーを手動でキャッチしたい場合exit_on_errorFalseこの機能は ; に設定することで有効にできます
------------------------- - --------------------------------------------------- --------------------------------------------------- -------------------------------------------関連するパラメータ情報を追加する
ことによりparser.add_argument()

`parser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])`

add_argument パラメータを追加し、パラメータ属性を設定します


注: コマンド ラインは parser.parse_args() を参照します。


name or flags- 名前付きまたはオプション文字列のリスト (同じパラメーターの --model_fiel や -m など)。

import argrase

def parse_args():
	parser = argparse.ArgumentParser()
    parser.add_argument('-m',"--model_file")
    return parser.parse_args()

action- パラメータがコマンド ラインに表示されるときに使用されるアクションの基本的なタイプには、次の分類ケースが含まれます。

  • action = store_const: アクションは通常、いくつかのフラグを指定するためにオプションで使用されます。
  • action = store_true / store_false: パラメータが表示される限り、True/False になり、デフォルト値は False/True です。
  • action = append/extend: リストを保存し、各パラメーター値をリストに追加します。
  • action = append_const: リストを保存し、const という名前のパラメーターで指定された値をリストに追加します。
  • action = count: キーワード パラメータの出現回数を計算します。デフォルト値は空で、0 に設定できます。
  • action = help: 現在のパーサーのオプションとパラメーターの完全なヘルプ情報を出力して終了します。ヘルプ アクションがパーサーに自動的に追加されます。
  • action = version: パラメーター属性に version=named parameter+version 情報を追加し、バージョン情報を出力して、呼び出し後に終了する必要があります。
  • action = argparse.BooleanOptionalAction: Action サブクラスまたは同じインターフェースを実装する他のオブジェクトを渡すことにより、任意のアクションを指定します。これにより、ブール型の操作が追加されます。
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--foo', action=argparse.BooleanOptionalAction)
parser.parse_args(['--no-foo'])
#Namespace(foo=False)
  • カスタム アクション、オーバーロードされたcallメソッド、およびオプションのinitメソッドと format_usage メソッド

nargs- 消費する必要があるコマンド ライン パラメータの数. nargs の割り当てにより、パラメータは、このパラメータの 1 つのアクションに異なる数のコマンド ライン パラメータを関連付けます. 具体的な値は次のとおりです:

  • 'N' (int): コマンド ラインの N 個のパラメータがリストに収集されます。
  • '? ': コマンド ライン パラメーターの同じパラメーター (add_argument によって追加) を 1 または 0 に設定できます。コマンド ラインから 1 つのパラメーターを使用して 1 つのアイテムを生成します。コマンド ライン パラメーターがない場合は、既定値が生成されます。 、オプション文字列は表示されますが、表示されません フォローされていないコマンドライン引数は const 値を生成します。より一般的な使用法は、オプションの入力ファイルと出力ファイルを許可することです。
import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--foo', nargs='?', const='c', default='d')
parser.add_argument('bar', nargs='?', default='d')
parser.parse_args(['XX', '--foo', 'YY'])
#Namespace(bar='XX', foo='YY')
parser.parse_args(['XX', '--foo'])
#Namespace(bar='XX', foo='c')
parser.parse_args([])
#Namespace(bar='d', foo='d')


##################读入读出文件###############################


parser = argparse.ArgumentParser()
parser.add_argument('infile', nargs='?', type=argparse.FileType('r'),
                    default=sys.stdin)
parser.add_argument('outfile', nargs='?', type=argparse.FileType('w'),
                    default=sys.stdout)
parser.parse_args(['input.txt', 'output.txt'])
#Namespace(infile=<_io.TextIOWrapper name='input.txt' encoding='UTF-8'>,     #_io.TextIOWrapper是文件输入输出包,UTF-8是一种变长字节编码方式
#          outfile=<_io.TextIOWrapper name='output.txt' encoding='UTF-8'>)
parser.parse_args([])
#Namespace(infile=<_io.TextIOWrapper name='<stdin>' encoding='UTF-8'>,
#          outfile=<_io.TextIOWrapper name='<stdout>' encoding='UTF-8'>)
  • '*': 0 個以上の同じパラメーター (add_argument によって追加) をコマンド ライン パラメーターで設定できます。
  • '+': 1 つ以上の同じパラメーター (add_argument によって追加) をコマンド ライン パラメーターで設定でき、2 つの下限が異なります。
  • args 値が設定されていない場合は、1 つのパラメーターが 1 つのコマンド ライン パラメーターを消費することを意味します。

const- コマンド ラインからは読み込まれないが、一部のアクションおよび nargs の選択に必要な定数を保持するために使用される;
default- 引数がコマンド ラインに表示されず、名前空間オブジェクトに存在しない場合に使用される値; -
typeデフォルトでは、パーサーはコマンドライン引数を単純な文字列として読み取ります. type キーワードを使用すると, コマンドライン引数を必要な型に変換するために必要な型チェックと型変換を実行できます. カスタムデータ型変換関数を使用できます. - Some
choicescommand-行パラメータは、制限された値のセットから選択する必要があります. コマンドライン解析を実行するとき、パラメータ値がチェックされ、パラメータが許容可能な値の1つではない場合、エラーメッセージが表示されます. 実際には, 使用可能なパラメータ コンテナ オプションのコマンド ライン パラメータを格納します (任意のコンテナ リスト、辞書などを格納できます);
required- このコマンド ライン オプションを省略できるかどうか、required=True の場合、コマンド ライン パラメータにこのパラメータを含める必要があります (add_argument によって追加)。代入しないことを選択できます;
help- パラメータ (add_argument によって追加される) の機能に関する簡単な説明とヘルプ情報;
metavar- 使用法メッセージで使用されるパラメータ値の例;
dest- オブジェクトに追加される属性の名前parse_args() によって返されます。デフォルトでは、位置パラメーター アクション (コマンド ラインの必須パラメーター) の場合、dest 値が直接使用され、オプションのパラメーターの場合、dest 値は大文字に変換されます。

parser = argparse.ArgumentParser()
parser.add_argument('--foo')
parser.add_argument('bar')
parser.parse_args('X --foo Y'.split())
#Namespace(bar='X', foo='Y')
parser.print_help()
#usage:  [-h] [--foo FOO] bar   #bar为位置参数,--foo为可选参数

#positional arguments:          #位置参数
# bar

#options:						#可选参数
# -h, --help  show this help message and exit
# --foo FOO


------------------------------------------------------------------------------------------------------
#metavar 仅改变 显示的 名称  parse_args() 对象的属性名称仍然会由 dest 值确定

parser = argparse.ArgumentParser()
parser.add_argument('--foo', metavar='YYY')
parser.add_argument('bar', metavar='XXX')
parser.parse_args('X --foo Y'.split())
#Namespace(bar='X', foo='Y')
parser.print_help()
#usage:  [-h] [--foo YYY] XXX

#positional arguments:
# XXX

#options:
# -h, --help  show this help message and exit
# --foo YYY


-------------------------------------------------------------------------------------------------
#不同的 nargs 值可能导致 metavar 被多次使用。 提供一个元组给 metavar 即为每个参数指定不同的显示信息

parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('-x', nargs=2)
parser.add_argument('--foo', nargs=2, metavar=('bar', 'baz'))
parser.print_help()
#usage: PROG [-h] [-x X X] [--foo bar baz]

#options:
# -h, --help     show this help message and exit
# -x X X
# --foo bar baz


----------------------------------------------------------------------------------------------------
#dest 允许提供自定义属性名称

parser = argparse.ArgumentParser()
parser.add_argument('--foo', dest='bar')
parser.parse_args('--foo XXX'.split())
#Namespace(bar='XXX')

解析のためのコマンドライン parser.parse_args()

ArgumentParser.parse_args(args=None, namespace=None)引数の文字列をオブジェクトに変換し、それを名前空間の属性として設定して、引数の属性を持つ名前空間を返します。

  • args- 解析される文字列リスト。デフォルト値は sys.argv から取得されます。argv は sys モジュールのグローバル変数であり、sys モジュールの属性とも呼ばれます。argv 自体はリスト型のオブジェクトです。このオブジェクトが保持する最初の要素は、コマンド ラインで渡されたモジュール名 (ファイル名.py) で、2 番目の要素 (両端を含む) から始まります。すべてが入力パラメーターです。
  • namespace- プロパティを取得するために使用されるオブジェクト。デフォルト値は新しい空の Namespace オブジェクトです。
  • オプション値の構文:
#选项和它的值是作为两个单独参数传入的
parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('-x')
parser.add_argument('--foo')
parser.parse_args(['-x', 'X'])
#Namespace(foo=None, x='X')
parser.parse_args(['--foo', 'FOO'])
#Namespace(foo='FOO', x=None)

----------------------------------------------------
#对于长选项(名称长度超过一个字符的选项),选项和值也可以作为单个命令行参数传入,使用 = 分隔它们即可

parser.parse_args(['--foo=FOO'])
#Namespace(foo='FOO', x=None)

------------------------------------------------
#对于短选项(长度只有一个字符的选项),选项和它的值可以拼接在一起

parser.parse_args(['-xX'])
#Namespace(foo=None, x='X')

------------------------------------------------
#有些短选项可以使用单个 - 前缀来进行合并,如果仅有最后一个选项(或没有任何选项)需要值的话

parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('-x', action='store_true')
parser.add_argument('-y', action='store_true')
parser.add_argument('-z')
parser.parse_args(['-xyzZ'])
#Namespace(x=True, y=True, z='Z')
  • 無効なパラメータ: コマンドを解析するとき、parse_args() は、あいまいなオプション、無効なタイプ、無効なオプション、位置パラメータの数の誤りなどを含むエラーを検出します。このようなエラーが発生すると、終了し、使用法メッセージとともにエラー テキストを出力します。
  • 「-」を含むパラメータ: 「-」がある場合はオプションのパラメータであることを意味し、「-」がない場合は実行時に入力する必要がある必須パラメータであることを意味します。
  • 名前空間オブジェクトargparse.Namespace: 属性を格納して返すオブジェクトを作成します。

学習の記録: 何か問題があれば指摘してください。一緒に進歩しましょう!
学習サイト(侵害があれば、私に連絡して削除してください)

おすすめ

転載: blog.csdn.net/qq_53312564/article/details/122390777