きり丸の技術日記

技術検証したり、資格等をここに残していきます。

PythonのConfigParserで読んだ設定ファイルの値を出力する(Python ConfigParser print all values)

Pythonの標準ライブラリのConfigParserで設定ファイル(Config.ini)を読み込めます。しかし、読み込んだ設定ファイルをprintにて出力しようとすると、読み込みに使用したSectionしか返却されません。Keyを指定することで値を出力できますが、読み込んだファイルのすべての値を出力したいときに全部のKeyを指定するのは面倒です。

今回の記事では、読み込みに使用したセクションだけでなく、読み込んだ設定ファイルの値をすべて出力します。

環境

  • Python
    • 3.8.10

ゴール

PythonのConfigParserで読み込んだ設定ファイルの中身をすべて出力する。

セクション「IT」で読み込んだ場合の出力結果。

{'username': 'it', 'password': 'password', 'port': '8080'}

セクション「ST」で読み込んだ場合の出力結果。

{'username': 'st', 'password': 'password', 'port': '80'}

書かないこと

必要なものだけを出力する方法。例えば、password等の出力したくない値もすべて出力してしまいます。

ユースケース

  • アプリケーションで起動後、読み込んだ設定ファイルの中身をログで確認したい

起動後に設定ファイルの中身を確認するのは難しいので、読み込んだタイミングでログに出力しておくとアプリケーションを停止せずに確認できるので便利です。

事前条件

次の設定ファイル(config.ini)を用意します。

[DEFAULT]
port=80

[IT]
username=it
password=password
port=8080

[ST]
username=st
password=password

設定ファイルの読み込みは次のコードで行います。

import configparser
config_ini = configparser.ConfigParser()
config_ini.read('config.ini', encoding='utf-8')

対応

dictを使用するだけです。データの型が辞書形式の場合、dictを使用するだけで出力可能な状態になります。

print(config_ini['IT'])
# dictを使用しないと次の値しか返却されない。
# <Section: IT>

print(dict(config_ini['IT']))
# 返却値:
# {'username': 'it', 'password': 'password', 'port': '8080'}
print(dict(config_ini['ST']))
# 返却値:
# {'username': 'st', 'password': 'password', 'port': '80'}

備考

すべてのセクションの設定値をすべて出力したい

「すべてのセクションの設定値をすべて出力したい」というユースケースは思いつきませんが、次のコードで出力できます。

print({section: dict(config_ini[section]) for section in config_ini.sections()})

# 返却値
# {'IT': {'port': '8080', 'username': 'it', 'password': 'password'}, 'ST': {'port': '80', 'username': 'st', 'password': 'password'}}

ソースコード

設定値は異なりますが、処理自体は同じものです。

終わりに

Pythonのdictを使うだけですので、思い付ければ簡単です。その思い付くだけ、というのがPythonに慣れていないと難しいですね。

「設定ファイルの中身を出力したい」という需要自体はいっぱいあるはずですが、日本語記事が見つからなかったので、私の記事で参考になれば幸いです。


この記事お役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。

参考記事

f:id:nainaistar:20210912224022p:plain