25
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

argparseの使い方とoptparseとの違い

Last updated at Posted at 2014-01-16

以前、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

25
32
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
32

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?