Pythonで設定ファイルの管理をするためのconfigparserについて解説します。
Contents
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
設定ファイルの中で[]で囲われている部分をセクションと言い、設定情報の一つの区分を表しています。
上記の例では、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は設定ファイルの管理にとても便利ですので是非使い方を覚えてもらえたらなと思います。
configparserの公式ドキュメントはこちらを参照してください。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。