blog.petitviolet.net

argparseの使い方とoptparseとの違い

2014-01-16

QiitaPython

以前、OptParser の使い方として記事を書いたが、どうやら argparse.ArgumentParser の方がなういらしい

なので argparse.ArgumentParser の使い方のメモ

# -*- coding:utf-8 -*-
from optparse import OptionParser
from argparse import ArgumentParser

if __name__ == '__main__':

    """ コマンドエラー時に表示する文字列 """
    desc = u'{0} [Args] [Options]\nDetailed options -h or --help'.format(__file__)
    # %progは出力できない
    # usage = u'%prog [Args] [Options]\nDetailed options -h or --help'

    parser = ArgumentParser(description=desc)
    # _parser = OptionParser(usage=usage, version=1.0)

    # 文字列
    parser.add_argument(
        '-q', '--query',
        type = str,         # 受け取る値の型を指定する
        dest = 'query',     # 保存先変数名
        required = True,    # 必須項目
        help = '検索する単語' # --help時に表示する文
    )
    # _parser.add_argument(
    #     '-q', '--query',
    #     action = 'store',
    #     type = 'str',               # 受け取る値の型を指定する
    #     dest = 'download_date',     # 保存先変数名
    #     help = '検索する単語'  # --help時に表示する文
    # )

    # 数値
    parser.add_argument(
        '-w', '--worker',
        type = int,
        dest = 'worker',
        default = 1,
        help = 'マルチプロセス数'
    )
    # 真偽値
    parser.add_argument(
        '-b', '--bool',
        action = 'store_true', # store_trueでdestにTrueがはいる(store_falseもある)
        dest = 'bool'
    )

    # """ 各オプションのデフォルト値をセット """
    # _parser.set_defaults(worker = 1)

    """ オプションをパース """
    args = parser.parse_args()
    # _options, _args = _parser.parse_args()


    """ オプションで指定した値は args.<変数名>で取得できる """
    query, worker, bool = args.query, args.worker, args.bool
    # query, worker, bool = _options.query, _options.worker, _options.bool
    if worker > 100
        # エラーを発生させるときは↓こんな感じ
        parser.error('プロセスが多すぎます')

    print args

optparse も argparse もそんなに変わらないと思う 細かな所が変わっているのと、argparse には色々機能が追加されているみたいだが、基本的にはこの程度で十分だと思う

参考

http://docs.python.jp/2/library/argparse.html

from: https://qiita.com/petitviolet/items/b8ed39dd6b0a0545dd36