Python

pythonのconfigparserを使って設定ファイルの読書き

ここでは、configparser のモジュールを使って設定ファイルの読書きを行う方法を紹介します。

configparser は、Python 標準のモジュールです。(確認済み:v3.10.4)

 

python の configparser とは

configparser は、Microsoft Windows の INI ファイルに似たフォーマットの設定用言語を
読書き(Read/Write)できるようにする ConfigParser クラスを提供しています。

このクラスを使って、ユーザーが簡単に設定をカスタマイズできる Python プログラムを実装できます。

注意

configparser では、Windows のレジストリ用に拡張された INI 文法はサポート していません 。

 

扱える INI ファイルのフォーマット

INIファイルフォーマット

INIファイルフォーマット(出典:WikiWiki.jp

扱える INI ファイルの構文では、Key(項目)と Value(値)のペアで各設定を記述し、
複数の設定をまとめて Section(章)として記述します。

設定の他に「#」を使ってコメントを記述することも可能です。

 

設定ファイル(INI形式)の読込

以下のような設定ファイルを読み込んでみましょう。

 

必要なのは、たった3ステップ、3行です!

  1. import configparser で、ConfiParser のパッケージを読込む
  2. configparser.ConfigParser() のコンストラクタで、パーサーを生成
  3. 読込む設定ファイルパスを read() メソッドに渡して呼び出す
SANACHAN
SANACHAN
次は、読込んだ設定値へアクセスしてみましょう。

 

設定値の参照

ConfigParser のオブジェクトへ「dictionary(辞書)」風にアクセスすると、読込んだ値を参照できます。

参考

python 標準の辞書については、「辞書(dict)に要素を追加・削除・連結」をご覧下さい。

 値へのアクセス方法
value = config[section][key]
または、
value = config[section].get(key)

 

それでは読込んだ値の一覧を表示してみましょう。

  1. メソッド:section()
    セクションの一覧をリスト形式で取得できます。
    for ~ in を使って、イテレーティブ処理も行うことができます。
  2. メソッド:get()
    標準の辞書と同じように、get(key) メソッドを使っても値を参照できます。
  3. 辞書の要領で参照
    dict[section][key] で値を参照します。
 実行結果
$ python show_config.py
sections = ['default', 'section']
get(config_num) = 1
section=default, key=config_num, val=1, type=<class 'str'>
section=default, key=config_path, val=config.ini, type=<class 'str'>
section=section, key=lang, val=python, type=<class 'str'>
section=section, key=pkg_name, val=configparser, type=<class 'str'>
SANACHAN
SANACHAN
値(Value)は文字列として保存されています。必要に応じて、型変換して使用しよう。

 

設定値の追加

設定値を追加する場合も dict(辞書)と同じように追加します。

SANACHAN
SANACHAN
使い慣れた辞書と同じように扱えるので非常に便利です。

 

設定値の書出し

読込が簡単であったように、書出しも簡単に行えます。
設定値を追加した状態で、config2.ini へ書き出してみましょう。

 config2.ini の中身
[default]
config_num = 1
config_path = config.ini
pkg_name = configparser
[section]
lang = python
name = sanachan
[common]
add = python

なんと 2 ステップ、2 行で書出し完了です。

 

まとめ

ポイント

  • 設定値は dict 型(辞書)と同じようにアクセスできる
  • read() / write() メソッドを使って、簡単に読書きできる

 

こちらの記事もよく読まれています

  • この記事を書いた人
  • 最新記事
SANACHAN

SANACHAN

「生涯一エンジニア」を掲げ、大手グローバル企業でSE/PGとして8年勤め、キャリアアップ転職した現役のエンジニアです。世にあるメジャーな全プログラム言語(コボル除く)を自由に扱えます。一児の父。自分のため、家族のため、日々勉強してます。システムエンジニア、プログラミングに関する情報を蓄積している雑記帳です。

-Python
-,