# 16 `ConfigParser` -- 設定ファイルの構文解析器

このモジュールでは， `ConfigParser`クラスを定義しています。 `ConfigParser` クラスは，Microsoft Windows の INI ファイルに 見られるような構造をもつ，基礎的な設定ファイルを実装しています． このモジュールを使って，エンドユーザーが簡単にカスタマイズできるような Python プログラムを書くことができます。

警告: このライブラリでは、Windowsのレジストリ用に拡張された INI 文法はサポート していません。

設定ファイルは 1 つ以上のセクションからなり、セクションは "`[section]`" ヘッダとそれに続くRFC 822 形式の "`name: value`" エントリからなっています。 "`name=value`" という形式も使えます。 値の先頭にある空白文字は削除されるので注意してください． オプションの値には，同じセクションか `DEFAULT` セクションに ある値を参照するような書式化文字列を含めることができます． 初期化時や検索時に別のデフォルト値を与えることもできます． "`#`"か"`;`" ではじまる行は無視され，コメントを書く ために利用できます。

例:

    [My Section]
    foodir: %(dir)s/whatever
    dir=frob

この場合"`%(dir)s`"は変数"`dir`" (この場合は"`frob`")に展開さ れます。 参照の展開は必要に応じて実行されます。

デフォルト値は `ConfigParser`のコンストラクタに辞書として渡すことで設定できます。 追加の(他の値をオーバーライドする)デフォルト値は`get()`メソッドに 渡すことができます。

クラス `RawConfigParser`( | [defaults])

  基本的な設定オブジェクトです。 defaultsが与えられた場合、オブジェクト に固有のデフォルト値がその値で初期化されます。 このクラスは値の置換をサポートしません。 バージョン 2.3 で 新たに追加 された仕様です。

クラス `ConfigParser`( | [defaults])

  `RawConfigParser`の派生クラスで値の置換を実装しており、 `get()`メソッドと`items()`メソッドに省略可能な引数を追加し ています。 defaultsに含まれる値は"`%()s`"による値の置換に 適当なものである必要があります。 __name__は組み込みのデフォルト値で、セクション名が含まれるので defaultsで設定してもオーバーライドされます。

  置換で使われるすべてのオプション名は、ほかのオプション名への参照と同様に `optionxform()` メソッドを介して渡されます。たとえば、 `optionxform()` のデフォルト実装 (これはオプション名を小文字に変換します) を 使うと、値 "`foo %(bar)s`" および "`foo %(BAR)s`" は同一になります。

クラス `SafeConfigParser`( | [defaults])

  `ConfigParser`の派生クラスでより安全な値の置換を実装しています。 この実装のはより予測可能性が高くなっています。 新規に書くアプリケーションでは、古いバージョンのPythonと互換性を持たせる 必要がない限り、このバージョンを利用することが望ましいです。 バージョン 2.3 で 新たに追加 された仕様です。

exception `NoSectionError`
  指定したセクションが見つからなかった時に起きる例外です。

exception `DuplicateSectionError`

  すでに存在するセクション名に対して `add_section()` が 呼び出された際に起きる例外です。

exception `NoOptionError`
  指定したオプションが指定したセクションに存在しなかった時に起きる例外です。

exception `InterpolationError`
  文字列の置換中に問題が起きた時に発生する例外の基底クラスです。

exception `InterpolationDepthError`
  `InterpolationError`の派生クラスで、文字列の置換回数が `MAX_INTERPOLATION_DEPTH`を越えたために完了しなかった場合に 発生する例外です。

exception `InterpolationMissingOptionError`
  `InterpolationError`の派生クラスで、値が参照しているオプションが 見つからない場合に発生する例外です。

exception `InterpolationSyntaxError`
  `InterpolationError`の派生クラスで、指定された構文で値を置換 することができなかった場合に発生する例外です。 バージョン 2.3 で 新たに追加 された仕様です。

exception `MissingSectionHeaderError`
  セクションヘッダを持たないファイルを構文解析しようとした時に起きる例外です。

exception `ParsingError`
  ファイルの構文解析中にエラーが起きた場合に発生する例外です。

`MAX_INTERPOLATION_DEPTH`
  rawが偽だった場合の`get()`による再帰的な文字列置換の繰り返 しの最大値です。`ConfigParser`クラスだけに関係します。

参考:

`shlex`:モジュール
  Unix のシェルに似た，アプリケーションの設定ファイル 用フォーマットとして使えるもう一つの小型言語です． .