コンテンツにスキップ

Pythonで引数をパースする

基本的な argparse の使い方をメモ。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# -*- coding: utf-8 -*-
import argparse

parser = argparse.ArgumentParser()

# 引数をセット
parser.add_argument('name',help="hello world!!")
parser.add_argument('-v', '--value')
# 必須パラメーターにしたい場合は、 required = Trueにする
parser.add_argument('-t', required=True)
# 引数複数にしたい場合
parser.add_argument('-f', '--foo', nargs=3)
# 可変にする
parser.add_argument('--hogehoge', nargs="*")
# 必須じゃなくする場合
parser.add_argument('-o', '--options', nargs="?", default=0)
# 指定のなかから選択する
parser.add_argument('--type', type=int, choices=[1, 2, 3])

# 引数の格納指定 オプション指定があればTrueを入れる
parser.add_argument('-y', action="store_true")
# 複数オプションがあったときにいろいろする
parser.add_argument('--add', action='append')

# 解析結果をGET。
# 引数空の時は、sys.args を入れてるのと同じ意味。
args = parser.parse_args()

# 表示するには、 .hogehoge のように、add_argumentで指定した名前にする
print args.name
print args.type
print args.y
print args.add

このスクリプトを hogehoge.py –h のようにすると

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
positional arguments:
  name                  hello world!!

optional arguments:
  -h, --help            show this help message and exit
  -v VALUE, --value VALUE
  -t T
  -f FOO FOO FOO, --foo FOO FOO FOO
  --hogehoge [HOGEHOGE [HOGEHOGE ...]]
  -o [OPTIONS], --options [OPTIONS]
  --type {1,2,3}
  -y
  --add ADD

こんな感じで Help を出すことが出来ます。
引数で help=””設定をすると、この help にコメントが表示されます。

パース結果は、 Namespace() クラスのオブジェクトとして帰ってきます。
使う時は、 args.xxx のように、 . + add_argument で指定した名前 で
値を取得することができます。

参考