тгТихая грань
ОПЕРАЦИЯ · КОНФИГУРАЦИЯ

Прочитать dotenv без исполнения

Разобрать намеренно узкое подмножество KEY=value без shell.

Инструмент: Python 3 · риск: read-only · проверено: 2026-02-21

Предварительные условия

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.

Обратимость

Без изменений.

Применимые форматы

dotenv ini