Pythonで.envファイルをいじる時、「Python-dotenv」を使用されている方は
多いのではないでしょうか。
今回は、そのPython-dotenvを利用して、直接envの値を上書きする方法です。
前提条件
Python-dotenvのインストールについては、公式のGithubを参考にしてください。
.envファイルに以下の値が存在していると仮定します。
.env
GREETING_KEY="HELLO"
今回は、このHELLO
をHEY
に変更します。
上書きできない例
最初に思いついたのは、下記のようなコードです。
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の値が変わらない、コードが動かないなどありましたら、
教えてください。
最後までお読みいただきありがとうございました🙇♂️