【Python】実行時の引数を設定(argparse)
argparseとは?
python実行時に引数を与えることがあります。
argparseを用いれば、簡単に引数の処理ができます。
例えば、以下のように--arg
とオプションを設けて
Pythonを実行することができます。
python sample.py --arg hoge
基本処理
オプションなし
import argparse parser = argparse.ArgumentParser() args = parser.parse_args() parser.add_argument('arg') print(args.arg)
Python実行
コンソールからPythonを実行してみましょう。
python sample.py hoge
結果
hoge
オプションあり(1つだけ)
import argparse parser = argparse.ArgumentParser() parser.add_argument('-a', '--arg') args = parser.parse_args() print(args.arg)
今回は引数を与える時に、--arg
や-a
といったように、
オプションを与えて実行してあげる。
-a
は--arg
の省略形になり、何度も記載する際には省略形を利用するほうが良いだろう。
print(args.arg)
では省略形を用いず、
正式名称を用いる必要がある。
Python実行
コンソールからPythonを実行してみましょう。
#どちらも同じ結果になる python arrg_practice.py --arg huga python arrg_practice.py -a huga
結果
huga
オプションあり(複数あり)
import argparse parser = argparse.ArgumentParser() parser.add_argument('-a', '--arg') parser.add_argument('-b', '--arg2') args = parser.parse_args() print(args.arg) print(args.arg2)
Python実行
オプションを設定した場合は、場所を入れ替えても問題ない。
#いずれも同じ結果になる python arrg_practice.py --arg huga --arg2 hoge python arrg_practice.py -a huga -b hoge python arrg_practice.py --arg2 hoge --arg huga python arrg_practice.py -b hoge -a huga
結果
huga hoge
応用処理
デフォルト値の設定
引数を与えなかった場合に、デフォルト値を設定することができる。
import argparse parser = argparse.ArgumentParser() parser.add_argument('-a', '--arg', default='not exist argument') args = parser.parse_args() print(args.arg)
defalult=
の部分に引数を与えなかった場合のデフォルト値が格納される。
Python実行
引数を与えた場合と与えなかった場合で見比べてみましょう。
引数あり
python arrg_practice.py -a hoge
結果
hoge
引数なし
python arrg_practice.py
結果
not exist argument
このように引数を与えなかった場合、
defalut
に格納されたnot exist argument
がarg
に与えられました。
フラグとして使う
引数の有無で、フラグを設定することができます。
設定方法はadd_argumentのaction='store_true'
とすることで可能になります。
import argparse parser = argparse.ArgumentParser() parser.add_argument('-a', '--flag', action='store_true') args = parser.parse_args() if args.flag is True: print('flag True') else: print('flag None')
Python実行
フラグありの場合
python arrg_practice.py --flag
結果
flag True
フラグなしの場合
python arrg_practice.py
結果
flag None
フラグの有無で、実行内容の条件分岐をさせたい場合には、
このようにフラグを設定することが可能になります。
指定した値のみ引数とする
予め引数で与える値が決まっており、 決まった候補からしか選択できないようにする。
選択肢以外を引数として与えた場合は、エラーになる。
import argparse parser = argparse.ArgumentParser() parser.add_argument('--select', choices=['hoge', 'huga', 'piyo']) args = parser.parse_args() print(args.select)
引数の選択肢にhoge, huga, piyo
を指定しました。
これ以外の選択肢が与えられるとエラーになります。
Python実行
選択肢から与える
python arrg_practice.py --select huga
結果
huga
選択肢外から与える
python arrg_practice.py --select poyo
結果
usage: arrg_practice.py [-h] [--select {hoge,huga,piyo}] arrg_practice.py: error: argument --select: invalid choice: 'poyo' (choose from 'hoge', 'huga', 'piyo')
エラー内容を見ると、指定された値以外(poyo
)が付与されたため、
エラーになりましたと記載されております。
参考書籍
- 作者: Bill Lubanovic,斎藤康毅,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/12/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る