【Python】configparserによる設定ファイル管理

Python で設定ファイルの管理をするための configparser について解説します。
目次
configparser による設定ファイルの管理
システムを構築する際には、システムの動作を制御する設定情報を設定ファイルとして管理することがほとんどです。Python では、設定ファイルを管理するためのモジュールとして configparser モジュールが用意されています。
本記事では、configparser の基本的な使い方について紹介します。
設定ファイルの形式
configparser では、Windows で主に使用される INI ファイルに似た構造を扱うことができます。configparser の公式ドキュメントに注釈がありますが、Windows のレジストリ用に拡張された INI 文法はサポートされていません。
具体的には、以下のような形式のファイルになります。
[WEB_SERVER] host = xxx.xxx.xxx.xxx port = 80 [DB_SERVER] host = xxx.xxx.xxx.xxx port = 3306
設定ファイルの中で [] で囲われている部分をセクションと言い、設定情報の 1 つの区分を表しています。
例では、Web サーバーに関するホスト名 (host)、ポート (port) の情報を [WEB_SERVER] のセクションで管理しており、DB サーバーに関するホスト名 (host)、ポート (port) の情報を [DB_SERVER] のセクションで管理しています。
セクションや設定値は、任意に増やすことができます。以降では、このような設定ファイルを configparser で具体的に扱う方法について見ていきます。
configparser による設定ファイル管理の基本
configparser による設定ファイル管理について例を使って紹介します。
import configparser
config = configparser.ConfigParser()
config["WEB_SERVER"] = {"HOST": "xxx.xxx.xxx.xxx", "PORT": 80}
config["DB_SERVER"] = {"HOST": "xxx.xxx.xxx.xxx", "PORT": 3306}
# configファイルへの書き込み
with open("config.ini", "w") as config_file:
config.write(config_file)
# configファイルからの読み込み
config1 = configparser.ConfigParser()
config1.read("config.ini")
# 読み込んだ結果を参照
print(config1["WEB_SERVER"])
print(config1["WEB_SERVER"]["HOST"])
print(config1["WEB_SERVER"]["PORT"])
print(config1["DB_SERVER"])
print(config1["DB_SERVER"]["HOST"])
print(config1["DB_SERVER"]["PORT"])【実行結果】 <Section: WEB_SERVER> xxx.xxx.xxx.xxx 80 <Section: DB_SERVER> xxx.xxx.xxx.xxx 3306
例では、設定ファイル情報を config.ini ファイルに書き込み、その後に書き込んだ設定情報を読みこんで表示しています。
設定ファイルの書き込み
import configparser
config = configparser.ConfigParser()
config["WEB_SERVER"] = {"HOST": "xxx.xxx.xxx.xxx", "PORT": 80}
config["DB_SERVER"] = {"HOST": "xxx.xxx.xxx.xxx", "PORT": 3306}configparser を使用するには、configparser をインポートし、ConfigParser クラスのオブジェクトを作成します。
ConfigParser クラスのオブジェクトでは「オブジェクト名["セクション名"] = {キー: 設定値, ...}」というように各セクションの設定値を辞書形式で指定します。
# configファイルへの書き込み
with open("config.ini", "w") as config_file:
config.write(config_file)上記部分は設定ファイルを書き込んでいる部分です。対象ファイルを書き込みモード ("w")で開いて、ConfigParser クラスの write メソッドにファイルオブジェクトを渡すことで設定情報の書き込みができます。
設定ファイルの読み込み
# configファイルからの読み込み
config1 = configparser.ConfigParser()
config1.read("config.ini")設定ファイルへ読み込むには、書き込み時と同じように ConfigParse クラスのオブジェクトを生成し、read メソッドに読み込む config ファイルのパスを指定します。
# 読み込んだ結果を参照 print(config1["WEB_SERVER"]) print(config1["WEB_SERVER"]["HOST"]) print(config1["WEB_SERVER"]["PORT"]) print(config1["DB_SERVER"]) print(config1["DB_SERVER"]["HOST"]) print(config1["DB_SERVER"]["PORT"])
読み込んだ結果を設定値を参照する場合には、上記のように「オブジェクト名["セクション名"]["キー"]」といった形で指定することで設定値を参照できます。
まとめ
Python で設定ファイルの管理をするための configparser について解説しました。
システムを構築する際には、システムの動作を制御する設定情報を設定ファイルとして管理することがほとんどです。configparser は設定ファイルの管理にとても便利ですので、使い方を覚えて活用してみてください。
上記で紹介しているソースコードについては github にて公開しています。参考にしていただければと思います。

