PythonでINI設定ファイルを読み込む:configparserのget, getint, getbooleanの使い方

アプリケーションの設定情報(データベースの接続先、デバッグモードの有無、タイムアウト時間など)を外部ファイルに分離することは、開発の基本です。

Pythonでは、古くから使われているシンプルな形式である INIファイル を扱うための標準ライブラリ configparser が用意されています。

この記事では、INIファイルの構造と、configparser を使って文字列、数値、真偽値を適切に読み込む方法について解説します。

目次

1. INIファイルの準備

まず、読み込み対象となる設定ファイル config.ini を用意します。INIファイルは [セクション名]キー = 値 で構成されます。

config.ini

[SERVER]
host = 192.168.1.10
port = 8080
debug_mode = yes

[APP_SETTINGS]
timeout = 15.5
max_users = 100
admin_email = admin@example.com

2. ファイルの読み込み

Python側で configparser モジュールをインポートし、パーサーオブジェクトを作成してファイルを読み込みます。

import configparser

# パーサーの作成
config = configparser.ConfigParser()

# 設定ファイルの読み込み (エンコーディング指定を推奨)
config.read("config.ini", encoding="utf-8")

# 読み込めているかセクション名を表示して確認
print(f"セクション一覧: {config.sections()}")

実行結果:

セクション一覧: ['SERVER', 'APP_SETTINGS']

3. 値の取得方法

configparser は、設定値をすべて「文字列」として読み込みます。しかし、ポート番号は整数、タイムアウトは小数、デバッグモードは真偽値として扱いたい場合があります。

そのために、型変換を自動で行う専用のメソッド(getint, getfloat, getboolean)が用意されています。

文字列として取得 (get または [])

基本の get() メソッド、または辞書のような [] アクセスを使用します。

# [SERVER] セクションの host キーを取得
host_val = config.get("SERVER", "host")

# [] を使ったアクセスも可能(こちらの方が直感的)
admin_mail = config["APP_SETTINGS"]["admin_email"]

print(f"Host: {host_val} (型: {type(host_val)})")
print(f"Email: {admin_mail}")

実行結果:

Host: 192.168.1.10 (型: <class 'str'>)
Email: admin@example.com

整数として取得 (getint)

ポート番号や個数など、整数が必要な場合に使用します。

# [SERVER] の port (8080) を整数として取得
port_val = config.getint("SERVER", "port")

# [APP_SETTINGS] の max_users (100) を整数として取得
max_users = config.getint("APP_SETTINGS", "max_users")

print(f"Port: {port_val} (型: {type(port_val)})")

実行結果:

Port: 8080 (型: <class 'int'>)

浮動小数点数として取得 (getfloat)

タイムアウト時間やレートなど、小数が必要な場合に使用します。

# [APP_SETTINGS] の timeout (15.5) をfloatとして取得
timeout_val = config.getfloat("APP_SETTINGS", "timeout")

print(f"Timeout: {timeout_val} (型: {type(timeout_val)})")

実行結果:

Timeout: 15.5 (型: <class 'float'>)

真偽値として取得 (getboolean)

ここが configparser の便利な点です。INIファイルに yes/no, on/off, true/false, 1/0 のいずれかが書かれていれば、それを正しく True / False のブール値に変換してくれます。

# [SERVER] の debug_mode (yes) をブール値として取得
is_debug = config.getboolean("SERVER", "debug_mode")

print(f"Debug Mode: {is_debug} (型: {type(is_debug)})")

if is_debug:
    print("デバッグモードで動作します。")

実行結果:

Debug Mode: True (型: <class 'bool'>)
デバッグモードで動作します。

まとめ

configparser を使うと、INIファイルを簡単に扱うことができます。

  • config.read("ファイル名"): 読み込み。
  • config["Section"]["Key"]: 文字列として取得(基本)。
  • config.getint(): 整数として取得。
  • config.getfloat(): 小数として取得。
  • config.getboolean(): yes, on, 1 などを True に変換して取得。

型に応じたメソッドを使うことで、コード内での型変換の手間を省き、エラーを防ぐことができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次