2: 2016-12-24 (土) 14:09:37 njf |
現: 2016-12-28 (水) 15:08:47 njf |
| | | |
| import sys | | import sys |
| + | |
| for a in sys.argv: | | for a in sys.argv: |
| print a | | print a |
| # -*- coding: utf-8 -*- | | # -*- coding: utf-8 -*- |
| import argparse | | import argparse |
- | | + | |
- | parser = argparse.ArgumentParser() | + | parser = argparse.ArgumentParser(description=u'二個の整数の引数をそのまま出力します') |
| parser.add_argument("a1", help=u"数値1", type=int) | | parser.add_argument("a1", help=u"数値1", type=int) |
| parser.add_argument("a2", help=u"数値2", type=int) | | parser.add_argument("a2", help=u"数値2", type=int) |
| + | |
| args = parser.parse_args() | | args = parser.parse_args() |
| print args.a1, args.a2 | | print args.a1, args.a2 |
| とすると、 | | とすると、 |
| usage: arg_test.py [-h] a1 a2 | | usage: arg_test.py [-h] a1 a2 |
| + | |
| + | 二個の整数の引数をそのまま出力します |
| + | |
| positional arguments: | | positional arguments: |
| a1 数値1 | | a1 数値1 |
| a2 数値2 | | a2 数値2 |
| + | |
| optional arguments: | | optional arguments: |
| -h, --help show this help message and exit | | -h, --help show this help message and exit |
| | | |
| ちゃんとヘルプメッセージが出ます。 | | ちゃんとヘルプメッセージが出ます。 |
| + | |
| + | オプションを指定するには以下のようにします。 |
| + | # -*- 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) |
| + | parser.add_argument("--add", help=u"加算する",action="store_true")#オプション |
| + | args = parser.parse_args() |
| + | |
| + | if args.add: |
| + | print args.a1 + args.a2 |
| + | else: |
| + | print args.a1, args.a2 |
| + | |
| + | ここで |
| + | parser.add_argument("--add", help=u"加算する",action="store_true")#オプション |
| + | が増えています。 |
| + | |
| + | 「action="store_true"」を指定することで、もしオプションとして"--add"が指定されていると、引数をパースしたときに、「add」にTrueが入ります。 |
| + | |
| + | 実行結果は、 |
| + | $ python arg_test.py --add 1 2 |
| + | 3 |
| + | |
| + | となり、加算されます。「--add」がなければ前の結果と同じです。 |
| | | |
| これらの処理を自分で実装するとかなり大変ですが、argparseを使うと数行で実現できます。 | | これらの処理を自分で実装するとかなり大変ですが、argparseを使うと数行で実現できます。 |
| + | |
| + | argparseにはこれ以外にもたくさんの機能があります。 |
| + | 正直多すぎて使いこなせません。 |
| + | ちょっとしたツールで使うなら上の例の程度知っておけば十分でしょう。 |
| + | |
| + | 詳しい機能は、とてもここでは紹介しきれないので、公式サイト[[http://docs.python.jp/2/library/argparse.html]]を参照してください。 |