ОПЕРАЦИЯ · КОНФИГУРАЦИЯ
Прочитать dotenv без исполнения
Разобрать намеренно узкое подмножество KEY=value без shell.
Предварительные условия
Python 3; example.env.sample: без export, кавычек, интерполяции и многострочных значений.
Команда
python3 - <<'PY'
import re
values = {}
with open("example.env.sample", encoding="utf-8") as f:
for n, raw in enumerate(f, 1):
line = raw.rstrip("\r\n")
if not line or line.startswith("#"): continue
key, sep, value = line.partition("=")
if not sep or not re.fullmatch(r"[A-Z_][A-Z0-9_]*", key) or key in values: raise ValueError(n)
if any(ord(c) in (34, 39, 96, 36, 92) for c in value): raise ValueError(n)
values[key] = value
print("Прочитано полей:", len(values))
PYОбъяснение аргументов
partition делит только по первому =; значения не экспортируются и не печатаются.
Ожидаемый результат
Словарь без выполнения содержимого файла.
Проверка
Проверьте обязательные ключи и допустимые значения отдельно.
Распространённые ошибки
- source исполняет shell; этот парсер намеренно не поддерживает все диалекты dotenv.
Обратимость
Без изменений.