Python 2.7から標準ライブラリに加わったargparseを使うと、簡単に引数のパーサが書けます。詳細はargparseを使ってみた - そこはかとなく書くよ。を見ていただくとして、ここでは基本機能だけ書きます。
目標
以下のようなargparse_test.pyを作ることを目標とします。
(1)ヘルプの表示
$ ./argparse_test.py -h または $ ./argparse_test.py --help
とすると引数の説明を表示したいです。
(2)ファイルパスの指定
$ ./argparse_test.py -f input_file.txt または $ ./argparse_test.py --file input_file.txt
というふうに、ファイルパスを-fまたは--fileで指定したいです。指定しなかったときはデフォルトのファイルがパスが読み込まれるようにしたいです。
(3)冗長な表示の有効化
-vまたは--verboseとすると冗長な出力を有効にできるようにしたいです。
$ ./argparse_test.py -v または $ ./argparse_test.py --verbose
実装
以上の目標を満たすコードは以下になります。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import argparse parser = argparse.ArgumentParser() # 値を必要とする引数 # default以下に、引数が指定されなかったときの値を書く parser.add_argument('-f', '--file', default="default_file.txt", help="set input file path") # 値を必要としない引数 # actionに'store_true'を指定すると、値を必要としないという意味になる parser.add_argument('-v', '--verbose', action='store_true', help="verbose output") # 結果を出力 args = parser.parse_args() print(args.file) print(args.verbose)
挙動を確認
$ ./argparse_test.py -h
とすると、以下のように自動的にusageを出力してくれます。これはすばらしい。
usage: p222_argparse.py [-h] [-f FILE] [-v] optional arguments: -h, --help show this help message and exit -f FILE, --file FILE set input file path -v, --verbose verbose output
また、
$ ./argparse_test.py -f input_file.txt
や
$ ./argparse_test.py -v
とすると、args.fileやargs.verboseに値が反映されていることがわかります。