ページへ戻る

− Links

 印刷 

Python​/コマンドライン引数 のバックアップソース(No.3) :: NJF Wiki

xpwiki:Python/コマンドライン引数 のバックアップソース(No.3)

« Prev[5]  Next »[6]
*コマンドライン引数の取得 [#gf1ebe46]

Python実行時のコマンドライン引数は以下のようにして取得できます。

 import sys

 for a in sys.argv:
     print a

これ「arg_test.py」という名前で保存して実行すると

 $ python arg_test.py a1 a2 a3 a4
 arg_test.py
 a1
 a2
 a3
 a4

のように、「sys.argv」に最初に実行しているファイル名、残りにコマンドライン引数が入っています。

*argparseでコマンドライン引数をよりうまくあつかう [#s3231922]

簡単なコマンドライン引数の取得なら「sys.argv」で十分ですが、実際のプログラムだと例えば「-h」や「--help」と引数を指定すればヘルプメッセージを出したり、必要な引数がなければエラーを出したりしたくなります。

ですが、「sys.argv」だけを使って自力でそれらを作ると結構な手間となります。そこで、Pythonにはそれらの機能を実装するのに役立つ「argparse」というモジュールが用意されています。

 # -*- coding: utf-8 -*-
 import argparse

 parser = argparse.ArgumentParser(description=u'二個の整数の引数をそのまま出力します')
 parser.add_argument("a1", help=u"数値1", type=int)
 parser.add_argument("a2", help=u"数値2", type=int)

 args = parser.parse_args()
 print args.a1, args.a2

これを以下のように実行すると、

 $ python arg_test.py 2 5
結果
 2 5
となります。

なにも引数無しで実行すると
 $ python arg_test.py
結果
 usage: arg_test.py [-h] a1 a2
 arg_test.py: error: too few arguments

となり、使い方と「引数が少なすぎる」というメッセージを出してくれます。

二つ目の引数に数値以外を指定すると、
 $ python arg_test.py 1 a
結果
 usage: arg_test.py [-h] a1 a2
 arg_test.py: error: argument a2: invalid int value: 'a'

このように、ちゃんと第二引数が不正であるというメッセージが出ます。

さらに
 $ python arg_test.py -h
とすると、
 usage: arg_test.py [-h] a1 a2

 二個の整数の引数をそのまま出力します

 positional arguments:
   a1          数値1
   a2          数値2

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

ちゃんとヘルプメッセージが出ます。

これらの処理を自分で実装するとかなり大変ですが、argparseを使うと数行で実現できます。

これ以外にもたくさんの機能があります。
正直多すぎて使いこなせません。
ちょっとしたツールで使うなら上の例の程度知っておけば十分でしょう。

詳しい機能は、とてもここでは紹介しきれないので、公式サイト[[http://docs.python.jp/2/library/argparse.html]]を参照してください。

« Prev[5]  Next »[6]