Python

トップ > チップス > Python
2013-11-05, python

引数をパースするargparse

Pythonならリストの操作が手軽なので、sys.argvを直接参照してもそこそこのことは出来るのですが、argparseパッケージを使うと、さらに高度なオプション指定を受け付けるプログラムを手軽に書くことができます。

Macにはデフォルトで入っているようですが、CentOSの場合、追加パッケージのインストールが必要です。

# yum install python-argparse

サンプルとして以下のようなプログラムを書いてみました。

ap.py
import argparse

parser = argparse.ArgumentParser(
    description='This is a description')
parser.add_argument('cmd',type=str,help='This is a help for "cmd"')
parser.add_argument('-f',action='store_true',
    help='This is a help of "f"')
parser.add_argument('-b',help='This is a help of "b"')
args = parser.parse_args()
print args

まずは、何も引数を付けずに実行します。cmd引数は必須なため、parse_argsが実行された時点でエラーメッセージ(と簡単な説明)を出力して終了します。

$ ./ap.py
usage: ap.py [-h] [-f] [-b B] cmd
sync.py: error: too few arguments

次に、「-h」オプションを付けて実行します。このオプションはArgumentParserがデフォルトで持っているもので、上記よりもさらに詳しい説明を出力します。

$ ./ap.py -h
usage: ap.py [-h] [-f] [-b B] cmd

This is a description

positional arguments:
  cmd This is a help for "cmd"

optional arguments:
  -h, --help show this help message and exit
  -f This is a help of "f"
  -b B This is a help of "b"

最後に、オプションを全て指定して実行します。引数に指定された値が解析されてオブジェクトに格納されていることが確認できるかと思います。あとはこれを利用して処理を実装するだけですね!簡単便利!

$ ./ap.py test -f -b b
Namespace(b='b', cmd='test', f=True)

参考URL

この記事は役に立ちましたか?