Python - パーサ - argparse 引数

 クラウディア
1. 概要
2. sys.argv
3. argparse

1. 概要

 「argparse」は、「python」の標準モジュールで、コマンドライン引数を解釈します。  本ページは、下記のサイトを参考にさせていただきました。
[解決!Python]argparseモジュールを使ってコマンドライン引数を処理するには:解決!Python」
「【Python】コマンドライン引数を解析する(argparseの利用) 」
「Argparse チュートリアル

2. sys.argv

 これを使わない場合。  今までが、そうだったのですが、「sys.argv」を使用しておりました。  「--verbose」という冗長オプションをつけるかつけないか、とか、「--code 値」のようなオプションがあるとして。

import sys

for i, value in  enumerate(sys.argv):
  print(i, value)
 てなソースを記述して、下記で実行すると。

python パス/ソース.py --verbose --code 400
 下記の結果が得られます。

パス/ソース.py
--verbose
--code
400
 実際のプログラムでは、「print()」の箇所に、引数の解釈のコードを挿入するわけです。  順番だったり、内容だったりを解釈しなければならないので、結構大変な作業になります。

3. argparse

 「argparse」を使うと、「add_argument()」というメソッドを使用して、引数の意味づけを行うことができるので、解釈の部分が楽になります。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--code', nargs=1, type=int)
parser.add_argument('--verbose', action='store_true')
args = parser.parse_args()

print(args.code)
print(args.verbose)
 てなソースを記述して、下記で実行すると。

python パス/ソース.py --verbose --code 400
 下記の結果が得られます。

[400]
True
 下記で実行すると。

python パス/ソース.py
 下記の結果が得られます。

None
False
 「add_argument()」というメソッドで、引数の定義をすることで。  いっぱつで、オプションの指定有無、指定があったときのオプションの値を入手することができるわけです。  これは、なかなか便利。  「add_argument()」の構文は。

add_argument(name or flags..., *[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest][, deprecated])
 となっていて、主なオプションは。  「action=''」で、「store_true」を指定すると、オプション指定時が「True」で、指定なしだと「False」になります。  「store_false」を指定すると、逆になります。  値のデフォルトの型は、「str」で、「type=」で、型として「int」や「float」を指定することができます。  「nargs=n」で、引数のオプションに続くべき、値の数を指定できます。  他にも多くのオプションがありますが、使ったことがないので、ここでは、割愛しておきます。
AbemaTV 無料体験