2
2

More than 3 years have passed since last update.

【Python3/Python-dotenv】.envのファイルの中身を上書きする方法

Posted at

Pythonで.envファイルをいじる時、「Python-dotenv」を使用されている方は
多いのではないでしょうか。
今回は、そのPython-dotenvを利用して、直接envの値を上書きする方法です。

前提条件

Python-dotenvのインストールについては、公式のGithubを参考にしてください。

.envファイルに以下の値が存在していると仮定します。

.env
GREETING_KEY="HELLO"

今回は、このHELLOHEYに変更します。

上書きできない例

最初に思いついたのは、下記のようなコードです。

failed.py
import os
from dotenv import load_dotenv

class OverrideEnv:

  def __init__(self):
     load_dotenv()

  def changeGreetingKey(self):
     str = "HEY"
     os.environ["GREETING_KEY"] = str

一見良さそうです。
しかし、このコードを走らせた後に、.envのファイルの中身を確認しても、
GREETING_KEY="HELLO"のままです。

上書きできる例

上書きするためには、dotenv.set_keyを用います。
下記のコードだとうまくいきます。

success.py
from dotenv import load_dotenv
import dotenv

class OverrideEnv:

  def __init__(self):
     load_dotenv()

  def changeGreetingKey(self):
     str = "HEY"

     dotenv_file = dotenv.find_dotenv()
     dotenv.set_key(dotenv_file, "GREETING_KEY", str)

このコードを走らせた後に、.envファイルの中身を確認すると、
GREETING_KEYの値がHELLOからHEYに変わっているはずです。

もし、envの値が変わらない、コードが動かないなどありましたら、
教えてください。
最後までお読みいただきありがとうございました🙇‍♂️

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2