python共通ライブラリまとめ:argparseライブラリargparseライブラリ


深さ学習スクリプトを書くときは、さまざまなパラメータを設定する必要がありますが、手動でコードを変更していますか?じゃ、アウトにして、急いでargparseライブラリの使用を学びましょう. pythonのargparseライブラリは、コマンドラインパラメータの解析ツールです.このライブラリを使用すると、コマンドラインでスクリプトを実行するときにパラメータを設定し、スクリプトに必要なパラメータを柔軟に設定できます.次にargparseライブラリの使い方をまとめます.
parseオブジェクトの作成
 argparseライブラリはpythonが持参したライブラリであり、使用時に直接import argparseで使用できます.最初のステップでは、ArgumentParserオブジェクトを作成します(設定されたパラメータは最終的にArgumentParserオブジェクトのプロパティとして使用され、ArgumentParser.xxxxxなどの呼び出し方法として使用されます).また、descriptionパラメータに追加したいプロンプト情報を入力できます.
import argparse

parser = argparse.ArgumentParser(description='add some useful information here....')

add_の使用Argument()メソッドパラメータの追加
  ArgumentParserオブジェクトを作成すると、add_argument()メソッドを使用してパラメータを追加できます.このパラメータは、[]のパラメータがオプションで、パラメータを設定するいくつかの属性として機能する入力パラメータです.add_argument()の最初の入力パラメータは、-接頭辞、例えば'foo'が前にない場合は位置パラメータであり、-接頭辞がある場合は--fooのようなオプションパラメータである.位置パラメータとオプションパラメータの概念はここでは説明しません.
ArgumentParser.add_argument(name or flags…[, action][, nargs][, const][, default]
[, type][, choices][, required][, help][, metavar][, dest])
import argparse

parser = argparse.ArgumentParser(description='arugment test')
parser.add_argument('foo')  #    
parser.add_argument('--foo2')  #    

次に、add_argument()メソッドでよく使用される属性をまとめます.
属性値
さぎょう
type
パラメータ格納時のタイプを指定し、int、float、str
action
パラメータを指定する動作は、store_const、store_true/store_false、append、count’とすることができる
default
パラメータのデフォルト値の指定
dest
パラメータの保存場所を指定し、'ddd'を設定すると、parser.dddによりそのパラメータ値を取得する
choice
パラメータのオプションを指定します.パラメータは設定値からのみ選択できます.
required
パラメータが必要かどうかを説明するには、True\Falseに設定できます.
help
パラメータの説明、ユーザーが--help\-hを入力すると、設定されたヘルプ情報が表示されます
type
  ArgumentParserに追加されたパラメータのデフォルト記憶タイプはstrであり、他の方法で記憶する場合は、typeの属性を設定することによって指定されたタイプで記憶する必要があります.コードと実行結果は次のとおりです.
parser = argparse.ArgumentParser(
      formatter_class=argparse.ArgumentDefaultsHelpFormatter,
      description='Create an image list or \
          make a record database by reading from an image list'
  )
parser.add_argument('--foo')
parser.add_argument('--foo2', type=int)
parser.add_argument('--foo3', type=float)

args = parser.parse_args()
print('foo is', type(args.foo))
print('foo2 is', type(args.foo2))
print('foo3 is', type(args.foo3))

C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py --foo 1.1 --foo2 1 --foo3 0.1
foo is <class 'str'>
foo2 is <class 'int'>
foo3 is <class 'float'>



action
  actionは、パラメータの動作を設定することができ、すなわち、オプションパラメータを入力すると、パラメータが行う動作である.
store_const
  は簡単で、このパラメータの値を定数に設定し、constの属性と組み合わせて使用し、初期化時にconstに設定した値を付与し、その後、プログラムでパラメータ値の変更を許可しないため、一部のユーザーの誤操作を制限することができ、コードと実行結果は以下の通りである.
parser.add_argument('--foo',action='store_const',const='this is a constant')
args = parser.parse_args()
print('foo is', args.foo)

C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py --foo
foo is this is a constant

store_true/store_false
  store_trueは、パラメータが出現した場合に設定される値がtrueであり、そうでなければfalseであることを示す.store_falseは反対です.
parser.add_argument('--foo',action='store_true')
args = parser.parse_args()
print('foo is', args.foo)

C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py --foo
foo is True

C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py
foo is False


append
  appendを使用すると、コマンドラインにパラメータに複数の値を割り当てることができ、これらの値は1つのリストに保存されます.
parser.add_argument('--foo',action='append')
args = parser.parse_args()
print('foo is', args.foo)

C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py --foo 1,23,5
foo is ['1,23,5']


count
名前の通り、パラメータの出現回数を統計します.
parser.add_argument('--foo',action='count')
args = parser.parse_args()
print('foo is', args.foo)

C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py --foo --foo --foo
foo is 3


default
パラメータのデフォルト値を設定する、すなわち、パラメータが入力されていない場合、パラメータのデフォルト値はdefaultに設定された値を格納する、非常に実用的な属性である.
parser.add_argument('--foo',type=str,default='default value')
args = parser.parse_args()
print('foo is', args.foo)

C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py
foo is default value

C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py --foo not-default
foo is not-default

dest
 dest宣言の変数として格納されるパラメータの格納場所を指定します.
parser.add_argument('--foo',type=str,dest='foo_dest')
args = parser.parse_args()
print('foo is', args.foo_dest)  #           foo_dest

C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py --foo dest_test
foo is dest_test


choice
  ユーザが入力するパラメータはchoicesで規定されているものに限られ,ユーザの入力を制限することができる.プログラムをよりロバストにする
parser.add_argument('--foo', type=int,choices=[5,6,7,8])
args = parser.parse_args()
print('foo is', args.foo)

C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py --foo 5
foo is 5

C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py --foo 1
usage: arg_test.py [-h] [--foo {5,6,7,8}]
arg_test.py: error: argument --foo: invalid choice: 1 (choose from 5, 6, 7, 8)


required
  このパラメータが必須かどうかを設定し、Trueの場合、ユーザーは必ずこのパラメータを入力する必要があります.
parser.add_argument('--foo', type=int,required=True)
args = parser.parse_args()
print('foo is', args.foo)

C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py
usage: arg_test.py [-h] --foo FOO
arg_test.py: error: the following arguments are required: --foo


help
 パラメータ設定ヘルプ情報は、ヘルプドキュメントに相当するパラメータをどのように入力すべきかをユーザーに伝えるプロンプトを書き込むことができます.
parser.add_argument('--foo', type=int,
					help = 'add some helpful message here.')
args = parser.parse_args()
print('foo is', args.foo)


C:\Users\lenovo\Desktop\arg_test>py -3 arg_test.py -h
usage: arg_test.py [-h] [--foo FOO]

Create an image list or make a record database by reading from an image list

optional arguments:
  -h, --help  show this help message and exit
  --foo FOO   add some helpful message here. (default: None)


parse_でArgs()メソッド解析パラメータ
  パラメータを追加した後、最後にparse_args()メソッドを呼び出すと、ネーミングスペース(namespace)が返され、その後、各設定されたパラメータを楽しく呼び出すことができます.
def parse_arg():
    parser = argparse.ArgumentParser(
        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
        description='Create an image list or \
            make a record database by reading from an image list'
    )
    parser.add_argument('--foo', type=int,
                        help='add some helpful message here.')
    # parser.add_argument('--foo2', type=int)
    # parser.add_argument('--foo3', type=float)
	
	#namespace
    args = parser.parse_args()
    return args


まとめ
  総じて言えば、argparseライブラリの使い方はまだ馬鹿で、もしマスターしたら、おめでとうございます.コードの中でパラメータを修正する必要はありません.