Python の python-dotenv で設定ファイルから値を読み込む
python-dotenv を使うと ini ファイルのように Key/Value 形式のファイルから値を読み込むことが出来ます。 今回は python-dotenv の使い方をメモしておきます。
検証環境¶
対象 | バージョン |
---|---|
macOS | 14.5 |
Python | 3.11.9 |
インストール¶
uv pip install python-dotenv
サンプル 1:.env ファイルから値を読み込む¶
設定ファイル¶
python-dotenv はデフォルトで .env
というファイルを読み込もうとします。 その為、以下の内容で .env
ファイルを作成します。
.env
# Development settings
DOMAIN=example.org
ADMIN_EMAIL=admin@${DOMAIN}
ROOT_URL=${DOMAIN}/app
スクリプト¶
dotenv_values()
で値を読み込みます。 引数が無い場合、読み込み先はデフォルトで .env
ファイルです。
sample.py | |
---|---|
1 2 3 4 5 6 |
|
実行結果¶
$ python sample.py
{'DOMAIN': 'example.org', 'ADMIN_EMAIL': 'admin@example.org', 'ROOT_URL': 'example.org/app'}
サンプル 2:任意のファイルから値を読み込む¶
設定ファイル¶
python-dotenv は任意のファイルから値を読み込むことも出来ます。 ここでは config.ini
ファイルを作成します。
config.ini
# Development settings
DOMAIN=example.org
ADMIN_EMAIL=admin@${DOMAIN}
ROOT_URL=${DOMAIN}/app
スクリプト¶
dotenv_values()
に引数を指定することで、指定した任意のファイルから値を読み込むことが出来ます。
sample.py | |
---|---|
1 2 3 4 5 6 |
|
実行結果¶
$ python sample.py
{'DOMAIN': 'example.org', 'ADMIN_EMAIL': 'admin@example.org', 'ROOT_URL': 'example.org/app'}
サンプル 3:文字列から値を読み込む¶
スクリプト¶
python-dotenv に限った話ではありませんが、StringIO を使って定義した文字列を python-dotenv の入力にすることで、文字列から値を読み込むことが出来ます。
sample.py | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
実行結果¶
$ python sample.py
example.org
admin@example.org
example.org/app