Yamamoto's Laboratory
 
OS関係
 
ファイル
 
数学・科学
 
出力
 
その他
  argparse
 
 
コンピューター Python コマンドライン引数の解析 (argparse)

Pythonコマンドライン引数の解析 (argparse)

ここでは,Python でコマンドライン引数を解析する「argparse」について,説明します.

目次


argparse とは

argparse はコマンドライン引数に関する解析を行います.その概要を示します.

概要

通常,コマンドラインで実行するプログラムに外部からその実行のための条件 (データ) を与えるには,コマンドライン引数を使います.このコマンドライン引数の処理のコードにはエラーの処理などを書く必要があり,結構面倒です.ヘルプも書くとなおさらです.argparse を使うと,これらの処理のコードをコードを容易に書くことができます.コマンドラインのプログラムには,ぜひとも使ってほしい機能です.

何ができるのか?

「何ができるか?」という質問には,具体例を示した方が分かりやすいでしょう.argparse を使ったプログラムと動作例を示します.

プログラム例

argparse を使った例を以下に示します(strjoin.py).このプログラムは 2 つの文字列を受け取り,それらを結合し,指定回数の繰り返しを行います.繰り返し回数の指定がない場合は,繰り返ししません (1回の繰り返し).

import argparse

parser = argparse.ArgumentParser(description='(a+b)*MULTI を表示')
parser.add_argument('a', help='最初の文字列です.')
parser.add_argument('b', help='二番目の文字列です.')
parser.add_argument('-m', '--multi', default=1, type=int, help='繰り返し数')
args = parser.parse_args()        # コマンドライン引数の取得

print((args.a+args.b)*args.multi)

プログラムの内容はとても単純です.これで,argparse はエラー処理もしてくれます.

このプログラムのコマンドライン引数の部分は,以下のとおりです.

  • 3 行目でパーサー (ArgumentParser オプジェクト) を作ります.ここでは,パーサーの名前を「parser」としましたが,名前は任意です.
  • 4 – 6 行目で引数を追加します.このうち,4 – 5 行目は位置引数,6 行目はオプション引数です.
  • 7 行目で引数の解析を行います.

実行結果

引数が正しい場合 このプログラムの実行結果を確認します.プログラムはコマンドライン引数を受け取り,意図したとおりに動作します.

$  python3 strjoin.py -m 3 aaa XXX
aaaXXXaaaXXXaaaXXX

引数に誤りがある場合 引数の間違いがある場合の実行結果を以下に示します.プログラムは使い方とエラーの内容を示し,停止します.

$  python3 strjoin.py zzz
usage: strjoin.py [-h] [-m MULTI] a b
strjoin.py: error: the following arguments are required: b

ヘルプの表示&emph;オプションに「-h (--help もOK)」を指定すると,ヘルプが現れます.

$  python3 strjoin.py -h
usage: strjoin.py [-h] [-m MULTI] a b

(a+b)*MULTI を表示

positional arguments:
  a                     最初の文字列です.
  b                     二番目の文字列です.

optional arguments:
  -h, --help            show this help message and exit
  -m MULTI, --multi MULTI
                        繰り返し数

クラスやメソッドの詳細

クラス: ArgumentParser の引数

クラス: ArgumentParser のコンストラクターの引数は,以下のとおりです.

class 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)
ArgumentParser のコンストラクターの引数
引数 デフォルト 動作
prog None オプション「-h (or --help)」 などで表示されるプログラム名.通常は設定不要です.設定しない場合は,sys.argv[0] をプログラム名として表示されます.[プログラム例]
usage None オプション「-h (or --help)」 などで表示されるプログラムの使い方の文字列.通常は設定不要です.設定しない場合は,適切 (それなり) の文字列が生成されます.[プログラム例]
description None 引数のヘルプの前に表示される文字列.
epilog None 引数のヘルプの後で表示される文字列.
parents ArgumentParser オブジェクトのリストです.このオブジェクトの引数が追加されます.
formatter_class ヘルプ出力をカスタマイズするためのクラス.
prefix_chars '-' オプションの引数の prefix になる文字集合.デフォルトのままが望ましいです.
fromfile_prefix_chars None 追加の引数を読み込むファイルの prefix になる文字集合.
argument_default None 引数のグローバルなデフォルト値.
conflict_handler 'error' 衝突するオプションを解決する方法.通常は設定不要です.
add_help True ヘルプオプション「-h, --help」をパーサーに追加します.
allow_abbrev True 先頭の文字が一意の場合,長いオプションの短縮指定を許可します.短縮は文字は先頭の一文字です.

ページ作成情報

参考資料

更新履歴

2019年09月06日 ページの新規作成


no counter