14.3.3.3 オプションの定義

各々のOption インスタンス、は-f--file といった同義のコマンドラインオプションからなる集合を表現しています。 一つのOption には任意の数のオプションを短い形式でも長い形式でも 指定できます。ただし、少なくとも一つは指定せねばなりません。

正しい方法でOption インスタンスを生成するには、 OptionParseradd_option() を使います:

parser.add_option(opt_str[, ...], attr=value, ...)

短い形式のオプション文字列を一つだけ持つようなオプションを生成するには:

parser.add_option("-f", attr=value, ...)
のようにします。

また、長い形式のオプション文字列を一つだけ持つようなオプションの定義は:

parser.add_option("--foo", attr=value, ...)
のようになります。

キーワード引数は新しい Option オブジェクトの属性を定義します。オプションの属性のうちでもっとも重要なのは action です。action は他のどの属性と関連があるか、そして どの属性が必要かに大きく作用します。関係のないオプション属性を指定したり、 必要な属性を指定し忘れたりすると、optparse は誤りを解説した OptionError例外を送出します。

コマンドライン上にあるオプションが見つかったときのoptparse の 振舞いを決定しているのは アクション(action) です。 optparse でハードコードされている標準的なアクションには 以下のようなものがあります:

store
オプションの引数を保存します (デフォルトの動作です)
store_const
定数を保存します
store_true
真 (True) を保存します
store_false
偽 (False) を保存します
append
オプションの引数をリストに追加します
append_const
定数をリストに追加します
count
カウンタを一つ増やします
callback
指定された関数を呼び出します
help
全てのオプションとそのドキュメントの入った使用法メッセージを出力します。

(アクションを指定しない場合、デフォルトは store になります。このアクション では、 type および dest オプション属性を指定せねばなりません。 下記を参照してください。)

すでにお分かりのように、ほとんどのアクションはどこかに値を保存したり、値を更新 したりします。 この目的のために、optparse は常に特別なオブジェクトを作り出し、 それは通常 options と呼ばれます (optparse.Values の インスタンスになっています)。 オプションの引数 (や、その他の様々な値) は、dest (保存先: destination) オプション属性に従って、optionsの属性として保存されます。

例えば、

parser.parse_args()

を呼び出した場合、optparse はまず options オブジェクト を生成します:

options = Values()

パーザ中で以下のようなオプション

parser.add_option("-f", "--file", action="store", type="string", dest="filename")

が定義されていて、パーズしたコマンドラインに以下のいずれかが入っていた場合:

-ffoo
-f foo
--file=foo
--file foo

optparse はこのオプションを見つけて、

options.filename = "foo"
と同等の処理を行います。

type および dest オプション属性は action と同じくらい 重要ですが、全ての オプションで意味をなすのはaction だけなのです。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。