# 5.14 `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()`メソッドに 渡すことができます。

class `RawConfigParser`( | [defaults])

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

class `ConfigParser`( | [defaults])

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

class `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 のシェルに似た，アプリケーションの設定ファイル 用フォーマットとして使えるもう一つの小型言語です． .