# 21 `optparse` -- より強力なコマンドラインオプション解析器

バージョン 2.3 で 新たに追加 された仕様です。

`optparse` モジュールは、`getopt` よりも簡便で、柔軟性に富み、 かつ強力なコマンドライン解析ライブラリです。 `optparse` では、より明快なスタイルのコマンドライン解析手法、 すなわち`OptionParser` のインスタンスを作成してオプションを 追加してゆき、そのインスタンスでコマンドラインを解析するという手法を とっています。`optparse` を使うと、GNU/POSIX 構文でオプションを 指定できるだけでなく、使用法やヘルプメッセージの生成も行えます。

`optparse` を使った簡単なスクリプト例を以下に示します:

    from optparse import OptionParser

    [...]
    parser = OptionParser()
    parser.add_option("-f", "--file", dest="filename",
                      help="write report to FILE", metavar="FILE")
    parser.add_option("-q", "--quiet",
                      action="store_false", dest="verbose", default=True,
                      help="don't print status messages to stdout")

    (options, args) = parser.parse_args()

このようにわずかな行数のコードによって、スクリプトのユーザは コマンドライン上で例えば以下のような 「よくある使い方」 を実行できるように なります:

    <yourscript> --file=outfile -q

コマンドライン解析の中で、`optparse` はユーザの指定した コマンドライン引数値に応じて`parse_args()` の返す options の属性値を設定してゆきます。 `parse_args()` がコマンドライン解析から処理を戻したとき、 options.filename は`"outfile"` に、`options.verbose` は `False` になっているはずです。`optparse` は 長い形式と短い形式の両方のオプション表記をサポートしており、 短い形式は結合して指定できます。また、様々な形でオプションに 引数値を関連付けられます。従って、以下のコマンドラインは全て上の例 と同じ意味になります:

    <yourscript> -f outfile --quiet
    <yourscript> --quiet --file outfile
    <yourscript> -q -foutfile
    <yourscript> -qfoutfile

さらに、ユーザが

    <yourscript> -h
    <yourscript> --help

のいずれかを実行すると、`optparse` はスクリプトの オプションについて簡単にまとめた内容を出力します:

    usage: <yourscript> [options]

    options:
      -h, --help            show this help message and exit
      -f FILE, --file=FILE  write report to FILE
      -q, --quiet           don't print status messages to stdout

yourscript の中身は実行時に決まります (通常は `sys.argv[0]` になります)。