import argparse
parser = argparse.ArgumentParser()
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
args = parser.parse_args()
print(args.echo)
主に3つのステップ
1. パーサーを作成する
parser = argparse.ArgumentParser()
ArgumentParser オブジェクトには、コマンド ラインを Python データ型に解析するために必要なすべての情報が含まれています。
2.パラメータの追加
parser.add_argument('integers', metavar='N', type=int, nargs='+', help='an integer for the accumulator')
プログラム引数情報を ArgumentParserに 追加する には、 add_argument()メソッドを呼び出します。
3. パラメータの解析
>>> parser.parse_args(['--sum', '7', '-1', '42'])
Namespace(accumulate=<built-in function sum>, integers=[7, -1, 42])
ArgumentParser は、parse_args()メソッド を通じて 引数を解析します 。
公式ドキュメント:
Argparse チュートリアル — Python 3.11.3 ドキュメント
argparse — コマンドライン オプション、引数、およびサブコマンドのパーサー — Python 3.11.3 ドキュメント
間違い: ファイル名がパッケージ名と同じです。。。モジュールが存在しないというエラーが報告されます。
add_argument()
add_argument() パラメータは次の 2 つのカテゴリに分類されます。
1. 位置パラメータ
二重引用符「argment_name」でパラメータを直接追加します。
2. オプションのパラメータ オプションの引数
パラメータの追加は「--argment_name」で表されます。
ヘルプ オプションを使用すると、すべてのパラメータを表示できます。
アクション
store:パラメータ値を保存します。デフォルトの動作です。
store_const:キーパラメータ const とともに使用されます。
parser = argparse.ArgumentParser()
parser.add_argument('--foo', action='store_const', const=42)
parser.parse_args(['--foo'])
Namespace(foo=42)
store_trueとstore_false:渡された場合はTrueとFalseそのもの、渡されなかった場合はその逆になります
append: パラメータ値がリストを形成します
parser = argparse.ArgumentParser()
parser.add_argument('--dataset',
action='append',
nargs=2,
metavar=('DATASET_NAME', 'DATASET_PATH'),
required=True,
help='')
parser.parse_args('--dataset twitter15 --dataset ./twitter15.json'.split())
Namespace(dataset=['twitter15', './twitter15.json'])
append_const : リストを保存し、 const キーワード引数で指定された値をリストに追加します。
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=[<class 'str'>, <class 'int'>])
count:パラメータの出現数をカウントします。
parser = argparse.ArgumentParser()
parser.add_argument('--verbose', '-v', action='count', default=0)
parser.parse_args(['-vvv'])
Namespace(verbose=3)
NRGS
N: 整数。コマンド ラインがリストにまとめられます。
'?': 可能な場合はコマンドラインから引数を受け取り、それを単一の項目として生成します。コマンドライン引数が存在しない場合は、デフォルトの値が生成されます。オプションの引数については、オプション文字列が存在するが、その後にコマンドライン引数が続かないという追加のケースがあることに注意してください。この場合、constの値が生成されます。
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') 存在选择字符foo传参,则赋值const的值
parser.parse_args([])
# Namespace(bar='d', foo='d') 无值传参则则使用默认值
*: 0 個以上のパラメーターが渡されることを示します。
+: すべてのコマンド ライン パラメーターがリストに収集されます。少なくとも 1 つのパラメータが存在しない場合は、エラーが報告されます。
parser = argparse.ArgumentParser(prog='PROG')
parser.add_argument('foo', nargs='+')
print(parser.parse_args(['a','b']))
# Namespace(foo=['a', 'b'])
定数
const には 2 つの使用法があります。
1. action='store_const' または action='append_const
2. nargs='?' 選択文字は存在するがパラメータが存在しない場合は、デフォルトで const を使用します。
デフォルト
割り当てられていない場合はデフォルト値、デフォルト値がない場合は None。
タイプ
カスタマイズできます
def hyphenated(string):
return '-'.join([word[:4] for word in string.casefold().split()])
parser = argparse.ArgumentParser()
_ = parser.add_argument('short_title', type=hyphenated)
parser.parse_args(['"The Tale of Two Cities"'])
# Namespace(short_title='"the-tale-of-two-citi')
目的地
ネームスペース名の設定
位置引数の場合、関数の最初の引数として dest が提供されます。
オプションの引数操作の場合、dest の値は、最初の長いオプション文字列を取得し、最初の「--」を削除することによって生成されます。長いオプション文字列が指定されていない場合、dest は最初の文字を取り除いて最初の短いオプション文字列から導出されます。文字列が有効なプロパティ名であることを確認するために、内部文字はすべて _ 文字に変換されます。
parser = argparse.ArgumentParser()
parser.add_argument('-f', '--foo-bar', '--foo')
parser.add_argument('-x', '-y')
parser.parse_args('-f 1 -x 2'.split())
# Namespace(foo_bar='1', x='2') 优先选择--后的名字
parser.parse_args('--foo 1 -y 2'.split())
# Namespace(foo_bar='1', x='2') 同样的条件,选择前面一个
parser = argparse.ArgumentParser()
parser.add_argument('--foo', dest='bar')
parser.parse_args('--foo XXX'.split())
Namespace(bar='XXX')
メタバール
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