argparseモジュールの見解(一)
10776 ワード
公式文書を見て、冒頭の例を見て、私はとても愚かで、以下のように見ました.
だからここはadd_Argumentメソッドを入手し、公式ドキュメントと結びつけて、自分の理解を書きます.
パラメータ
ArgumentParser.add_argument(name or flags...[,action][,nargs][,const][,default][,type][,choices][,requried][,help][,metavar][,dest])###name or flags add_Argument()メソッドに必要なパラメータであり、最初の位置にあり、パラメータが可変パラメータであるか、位置パラメータであるかを判断します.フォーマット要件:
help
カスタムadd_Argument()のパラメータのヘルプ情報
type
デフォルトでは、コマンドラインパラメータが文字列タイプに直接解析される場合、typeはパラメータタイプを他のものに指定できます.
ファクトリ関数タイプも用意されており、カスタム関数タイプとして指定することもできます.
choices
パラメータを定義する値範囲
dest
parse_の使用args()パラメータを解析すると、1つの属性はdestの値であり、デフォルトでは位置パラメータ、すなわち位置パラメータの値であり、オプションパラメータでは接頭辞を除去した値である.
nargs
一般的に、1つのパラメータは1つの操作パラメータ(例えば--version)に関連付けられますが、nargsは複数のパラメータを1つの操作パラメータに関連付けることができます. N-正の整数、 '?' - 1つ以上のパラメータ とエラーが報告される.
default
パラメータのデフォルト値を設定し、コマンドラインがある場合はデフォルト値を上書きし、ない場合はデフォルト値を使用します.
const
公式サイトの説明は次のとおりです.
action
ArgumenParserオブジェクトに対してコマンドラインパラメータのサポートをどのように処理するかを判断するためのアクションは、次のとおりです.'store'-パラメータの値を格納するデフォルトのアクション 'store_const'-オプションパラメータoptional argumentsに適用され、constキーワードで指定する値 を格納します. 'store_trueと'store_false'-'storeに属するconst'の特殊な使い方は、constのデフォルト値をTrueまたはFalseに設定し、それぞれ を記憶する.'append'-各パラメータの値を1つのリストに追加する 'append_const'-複数のパラメータが1つのリストに定数を格納する必要がある場合に設定する を接続する必要があります.
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
だからここはadd_Argumentメソッドを入手し、公式ドキュメントと結びつけて、自分の理解を書きます.
パラメータ
ArgumentParser.add_argument(name or flags...[,action][,nargs][,const][,default][,type][,choices][,requried][,help][,metavar][,dest])###name or flags add_Argument()メソッドに必要なパラメータであり、最初の位置にあり、パラメータが可変パラメータであるか、位置パラメータであるかを判断します.フォーマット要件:
>>>parser.add_argument('--foo','-f') # , parse.ArgumentParser() prefix_char
>>>parser.add_argument('foo') #
help
カスタムadd_Argument()のパラメータのヘルプ情報
wuxiangyu:test_all dor-pc$ cat help_argument.py
#!/usr/bin/env python
#coding=utf-8
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--foo',help="this is mystyle help")
parser.parse_args()
dor:test_all wuxiangyu-pc$ ./help_argument.py -h
usage: help_argument.py [-h] [--foo FOO]
optional arguments:
-h, --help show this help message and exit
--foo FOO this is mystyle help
type
デフォルトでは、コマンドラインパラメータが文字列タイプに直接解析される場合、typeはパラメータタイプを他のものに指定できます.
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('foo', type=int) #
>>> parser.add_argument('bar', type=open) # open
>>> parser.parse_args('2 temp.txt'.split())
Namespace(bar=<_io.textiowrapper name="temp.txt" encoding="UTF-8">, foo=2)
ファクトリ関数タイプも用意されており、カスタム関数タイプとして指定することもできます.
>>>parser = argparse.ArgumentParser()
>>>parser.add_argument('bar',type=argparse.FileType('w'))
>>>parser.parse_args(['out.txt'])
Namespace(bar=<_io.textiowrapper name="out.txt" mode="w" encoding="UTF-8">) # 'w' 'out.txt'
>>> def perfect_square(string):
... value = int(string)
... sqrt = math.sqrt(value)
... if sqrt != int(sqrt):
... msg = "%r is not a perfect square" % string
... raise argparse.ArgumentTypeError(msg)
... return value
...
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> parser.add_argument('foo', type=perfect_square)
>>> parser.parse_args(['9'])
Namespace(foo=9)
>>> parser.parse_args(['7'])
usage: PROG [-h] foo
PROG: error: argument foo: '7' is not a perfect square
choices
パラメータを定義する値範囲
>>> parser = argparse.ArgumentParser(prog='doors.py')
>>> parser.add_argument('door', type=int, choices=range(1, 4))
>>> print(parser.parse_args(['3']))
Namespace(door=3)
>>> parser.parse_args(['4'])
usage: doors.py [-h] {1,2,3}
doors.py: error: argument door: invalid choice: 4 (choose from 1, 2, 3)
dest
parse_の使用args()パラメータを解析すると、1つの属性はdestの値であり、デフォルトでは位置パラメータ、すなわち位置パラメータの値であり、オプションパラメータでは接頭辞を除去した値である.
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('bar')
_StoreAction(option_strings=[], dest='bar', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.add_argument('--version')
_StoreAction(option_strings=['--version'], dest='version', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
nargs
一般的に、1つのパラメータは1つの操作パラメータ(例えば--version)に関連付けられますが、nargsは複数のパラメータを1つの操作パラメータに関連付けることができます.
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', nargs=2)
>>> parser.add_argument('bar', nargs=1)
>>> parser.parse_args('c --foo a b'.split())
Namespace(bar=['c'], foo=['a', 'b'])
>>> 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')
requiredは必須パラメータを設定するために使用され、設定後、コマンドラインが使用しないと>>> parser.add_argument('--foo',required=True)
>>> parser.add_argument('--version 21'.split)
>>> parser.parse_args('--version 21'.split())
usage: [-h] --foo FOO [--version VERSION]
: error: the following arguments are required: --foo
default
パラメータのデフォルト値を設定し、コマンドラインがある場合はデフォルト値を上書きし、ない場合はデフォルト値を使用します.
const
公式サイトの説明は次のとおりです.
The const argument of add_argument() is used to hold constant values that are not read from the command line but are required for the various ArgumentParser actions. The two most common uses of it are:
When add_argument() is called with action='store_const' or action='append_const'. These actions add the const value to one of the attributes of the object returned by parse_args(). See the action description for examples.
When add_argument() is called with option strings (like -f or --foo) and nargs='?'. This creates an optional argument that can be followed by zero or one command-line arguments. When parsing the command line, if the option string is encountered with no command-line argument following it, the value of const will be assumed instead. See the nargs description for examples.
With the 'store_const' and 'append_const' actions, the const keyword argument must be given. For other actions, it defaults to None.
action 'store_const' 'append_const' 。 , , ,
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo',action='store_const',const=42)
>>> parser.add_argument('--bar',action='append_const',const='hello')
>>> parser.parse_args('--foo --bar'.split())
Namespace(bar=['hello'], foo=42)
action
ArgumenParserオブジェクトに対してコマンドラインパラメータのサポートをどのように処理するかを判断するためのアクションは、次のとおりです.
>>>parser = argparse.ArgumentParser()
>>>parser.add_argument('--foo')
>>>parser.parse_args('--foo 1'.split)
Namespace(foo='1')
>>>parser = argparse.ArgumentParser()
>>>parser.add_argument('--foo',action='store_const',const=42)
>>>parser.parse_args(['--foo'])
Namespace(foo=42)
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--foo', action='store_true')
>>> parser.add_argument('--bar', action='store_false')
>>> parser.add_argument('--baz', action='store_false')
>>> parser.parse_args('--foo --bar'.split())
Namespace(foo=True, bar=False, baz=True)
>>>parser = argparse.ArgumentParser()
>>>parser.add_argument('--foo',action='append')
>>>parser.parse_args('--foo a --foo b --foo c'.split())
Namespace(foo=['a', 'b', 'c'])
>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--str', dest='types', action='append_const', const=str)
>>> parser.add_argument('--int', dest='types', action='append_const', const=int)
>>> parser.parse_args('--str --int'.split())
Namespace(types=[, ])
'count'-パラメータの出現回数をカウントする>>> parser.add_argument('-v',action='count')
_CountAction(option_strings=['-v'], dest='v', nargs=0, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parser.parse_args(['-vvv'])
Namespace(v=3)
'version'-定義バージョン情報>>> import argparse
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> parser.add_argument('--version', action='version', version='%(prog)s 2.0')
>>> parser.parse_args(['--version'])
PROG 2.0
metavarコマンドラインに続くパラメータのスタイルの例、例えば--versionの後ろに3桁の大文字(例えばYYYY)が接続されている場合、metavar='YYY'を設定することができます.ここでは、3つの大文字>>> parser.add_argument('--version',metavar='YYY')
_StoreAction(option_strings=['--version'], dest='version', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar='YYY')
>>> parser.add_argument('--info',metavar='XX')
_StoreAction(option_strings=['--info'], dest='info', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar='XX')
>>> parser.parse_args('--version HTB --info HK'.split())
Namespace(info='HK', version='HTB')
>>> parser.print_help()
usage: [-h] [--version YYY] [--info XX]
optional arguments:
-h, --help show this help message and exit
--version YYY
--info XX