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'}}
ソースコード
設定値は異なりますが、処理自体は同じものです。
- playwright-practice/config.ini at main · hirotoKirimaru/playwright-practice · GitHub
- playwright-practice/TestProperties.py at main · hirotoKirimaru/playwright-practice · GitHub
終わりに
Pythonのdict
を使うだけですので、思い付ければ簡単です。その思い付くだけ、というのがPythonに慣れていないと難しいですね。
「設定ファイルの中身を出力したい」という需要自体はいっぱいあるはずですが、日本語記事が見つからなかったので、私の記事で参考になれば幸いです。
この記事お役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。
参考記事