at_yasu's blog

ロード的なことを

argparse

Python 3.0/2.7以降で標準モジュールになったargparseですが、結構いいかなと思ったけど*1日本語文献が不思議なことにpython-doc以外に見当たらないのでメモ書き。

なお、2.6系でも使えて、pip install argparse でインストール。

使い方

argparser オブジェクトにオプションを追加して、解釈するというパターンです。便利なのは、-h --help を特に用意しなくてもいいという点。


引き数を取らない --foo オプション、いくつかの引数を取るようなコマンドを作ってみる。


こんな感じ

$ ./argparse_test.py test aa bb --foo
foo is up.
files:  ['test', 'aa', 'bb']
$ ./argparse_test.py -h
usage: argparse_test.py [-h] [-f] [files... [files... ...]]

positional arguments:
  files...    test

optional arguments:
  -h, --help  show this help message and exit
  -f, --foo   foo help

python script

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import argparse
import sys

parse = argparse.ArgumentParser()
parse.add_argument('-f', '--foo', action='store_false', help='foo help')
parse.add_argument('files', metavar="files...", help="test", nargs="*")

ns = parse.parse_args(sys.argv[1:])

if ns.foo:
    print "foo is down."
else:
    print "foo is up."

print "files: ", ns.files

*1:コンソールにて、arg_parse関数呼び出したら死亡するとか堪忍…