jisujang's picture
first
a005c19
import os
import json
from dotenv import load_dotenv
load_dotenv()
def get_json_from_env_var(env_var_name):
"""
ν™˜κ²½ λ³€μˆ˜μ—μ„œ JSON 데이터λ₯Ό 가져와 λ”•μ…”λ„ˆλ¦¬λ‘œ λ³€ν™˜ν•˜λŠ” ν•¨μˆ˜.
:param env_var_name: ν™˜κ²½ λ³€μˆ˜ 이름
:return: λ”•μ…”λ„ˆλ¦¬ ν˜•νƒœμ˜ JSON 데이터
"""
json_string = os.getenv(env_var_name)
if not json_string:
raise EnvironmentError(f"ν™˜κ²½ λ³€μˆ˜ '{env_var_name}'κ°€ μ„€μ •λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.")
try:
# μ€„λ°”κΏˆ(\n)을 μ΄μŠ€μΌ€μ΄ν”„ 문자(\\n)둜 λ³€ν™˜
json_string = json_string.replace("\n", "\\n")
# JSON λ¬Έμžμ—΄μ„ λ”•μ…”λ„ˆλ¦¬λ‘œ λ³€ν™˜
json_data = json.loads(json_string)
except json.JSONDecodeError as e:
raise ValueError(f"JSON λ³€ν™˜ μ‹€νŒ¨: {e}")
return json_data
def json_to_env_var(json_file_path, env_var_name="JSON_ENV_VAR"):
"""
μ£Όμ–΄μ§„ JSON 파일의 데이터λ₯Ό ν™˜κ²½ λ³€μˆ˜ ν˜•νƒœλ‘œ λ³€ν™˜ν•˜μ—¬ 좜λ ₯ν•˜λŠ” ν•¨μˆ˜.
:param json_file_path: JSON 파일 경둜
:param env_var_name: ν™˜κ²½ λ³€μˆ˜ 이름 (κΈ°λ³Έκ°’: JSON_ENV_VAR)
:return: None
"""
try:
# JSON 파일 읽기
with open(json_file_path, 'r') as json_file:
json_data = json.load(json_file)
# JSON 데이터λ₯Ό λ¬Έμžμ—΄λ‘œ λ³€ν™˜
json_string = json.dumps(json_data)
# ν™˜κ²½ λ³€μˆ˜ ν˜•νƒœλ‘œ 좜λ ₯
env_variable = f'{env_var_name}={json_string}'
print("\nν™˜κ²½ λ³€μˆ˜λ‘œ μ‚¬μš©ν•  수 μžˆλŠ” 좜λ ₯κ°’:\n")
print(env_variable)
print("\nμœ„ 값을 .env νŒŒμΌμ— λ³΅μ‚¬ν•˜μ—¬ λΆ™μ—¬λ„£μœΌμ„Έμš”.")
except FileNotFoundError:
print(f"νŒŒμΌμ„ 찾을 수 μ—†μŠ΅λ‹ˆλ‹€: {json_file_path}")
except json.JSONDecodeError:
print(f"μœ νš¨ν•œ JSON 파일이 μ•„λ‹™λ‹ˆλ‹€: {json_file_path}")