configparser

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

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

Python で設定ファイルの管理をするための configparser について解説します。

configparser による設定ファイルの管理

システムを構築する際には、システムの動作を制御する設定情報を設定ファイルとして管理することがほとんどです。Python では、設定ファイルを管理するためのモジュールとして configparser モジュールが用意されています。

本記事では、configparser の基本的な使い方について紹介します。

Python の設定ファイル管理では、YAML もよく使用されます。YAML の扱いについては「PyYAMLでのYAMLファイル管理」を参考にしてください。

設定ファイルの形式

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 は設定ファイルの管理にとても便利ですので、使い方を覚えて活用してみてください。

configparser の公式ドキュメントはこちらを参照してください。

ソースコード

上記で紹介しているソースコードについては github にて公開しています。参考にしていただければと思います。

あわせて読みたい
【Python Tech】プログラミングガイド
【Python Tech】プログラミングガイド
ABOUT ME
ホッシー
ホッシー
システムエンジニア
はじめまして。当サイトをご覧いただきありがとうございます。 私は製造業のメーカーで、DX推進や業務システムの設計・開発・導入を担当しているシステムエンジニアです。これまでに転職も経験しており、以前は大手電機メーカーでシステム開発に携わっていました。

プログラミング言語はこれまでC、C++、JAVA等を扱ってきましたが、最近では特に機械学習等の分析でも注目されているPythonについてとても興味をもって取り組んでいます。これまでの経験をもとに、Pythonに興味を持つ方のお役に立てるような情報を発信していきたいと思います。どうぞよろしくお願いいたします。

※キャラクターデザイン:ゼイルン様
記事URLをコピーしました