Pythonのスクリプトを起動するときのオプションを指定する方法

以前は optparse 使ってましたけど、廃止予定だそうです。で、今は argparse 使います。2.7以降はargparseが標準で入ってるそうなので、今時はもうoptparseも使えはするけどargparse一択でしょう。

from argparse import ArgumentParser

if __name__ == "__main__":

    _parser = ArgumentParser()

    _parser.add_argument(
        '-s',
        '--string',
        type=str,
        dest='string',
        required=True,
        help='String Value'
    )

    _parser.add_argument(
        '-n',
        '--number',
        type=int,
        dest='number',
        required=True,
        help='Number Value'
    )

    _args = _parser.parse_args()

    print(_args.string, _args.number)

なんのオプションも指定しないで起動すると

$ python sample.py
usage: sample.py [-h] -s STRING -n NUMBER
sample.py: error: argument -s/–string is required

「-sで文字列、-nで値を指定してね。-sは必須オプションだからエラーだよ。」
ってメッセージがでます。親切です。

$ python sample.py -s S -n N
usage: sample.py [-h] -s STRING -n NUMBER
sample.py: error: argument -n/–number: invalid int value: ‘N’

-n に文字列を与えてもエラーが出ます。ちゃんと型チェックしてくれます。親切です。

$ python sample.py -s Hello -n 123
(‘Hello’, 123)

便利。