Парсер конфигурации INI
INI-файлы — это простой формат конфигурации с секциями и парами ключ-значение, исторически используемый Windows и по-прежнему распространённый во многих приложениях (php.ini, my.cnf, setup.cfg). Этот инструмент разбирает синтаксис INI, отображает секции и свойства, а также может конвертировать в JSON.
Спецификации
Типичные сценарии использования
- Просмотр конфигурации php.ini или MySQL my.cnf
- Разбор файлов Python setup.cfg или tox.ini
- Просмотр файлов конфигурации Git (.gitconfig)
- Отладка настроек приложений Windows
- Конвертация устаревших INI-конфигов в JSON или YAML
Возможности
- Разбор заголовков [section] и пар key=value
- Обработка комментариев (префиксы ; и #)
- Поддержка значений в кавычках с escape-последовательностями
- Отображение глобальных свойств (до любой секции)
- Конвертация в JSON для программного использования
- Режим форматированного просмотра
- Отображение комментариев для каждой секции
- Предупреждения при разборе некорректных записей
Примеры
Конфигурация базы данных
Попробовать →Типичный файл конфигурации базы данных.
[database]
host=localhost
port=3306
name=myapp_db
user=admin
[cache]
enabled=true
ttl=3600
driver=redisКонфигурация PHP
Попробовать →Фрагмент из php.ini.
; PHP Configuration
[PHP]
memory_limit = 256M
max_execution_time = 30
upload_max_filesize = 64M
[Date]
date.timezone = "America/New_York"Советы
- Имена секций нечувствительны к регистру в большинстве реализаций.
- Используйте кавычки вокруг значений, содержащих специальные символы.
- Комментарии традиционно используют ;, но некоторые парсеры также принимают #.
- Дублирование ключей в одной секции может перезаписывать значения или создавать массивы в зависимости от парсера.
Описание Парсер конфигурации INI
INI-файлы — это простой формат конфигурации, использующий секции (в квадратных скобках) и пары ключ-значение. Несмотря на отсутствие формальной спецификации, формат широко использовался со времён MS-DOS и Windows. PHP использует php.ini, Git использует .gitconfig (в стиле INI), приложения Windows используют файлы .ini, и многие устаревшие системы полагаются на этот формат.
Базовая структура группирует пары key=value под заголовками [section]. Значения обычно являются строками, хотя некоторые парсеры интерпретируют числа и логические значения. Комментарии используют точку с запятой (;) или знак решётки (#). Многострочные значения, вложенные секции и escape-последовательности различаются между реализациями, поскольку нет авторитетного стандарта.
INI-файлы заполняют промежуток между плоскими форматами ключ-значение (такими как файлы .env) и структурированными форматами (такими как TOML и YAML). Они обеспечивают организацию на уровне секций без сложности вложенных структур данных. Для простой конфигурации приложений с логической группировкой INI остаётся практичным выбором.
Отсутствие стандартизации — главная слабость INI. Различные парсеры расходятся во мнениях о символах комментариев, чувствительности ключей к регистру, обработке дублирующихся ключей и секций и возможности переноса значений на несколько строк. При начале нового проекта TOML обычно является лучшим выбором, поскольку предоставляет ту же организацию на основе секций с формальной спецификацией и более богатыми типами данных.
TOML был разработан как современная замена INI с формальной спецификацией. Он добавляет нативные типы данных (целые числа, числа с плавающей точкой, логические значения, даты, массивы), вложенные таблицы, массивы таблиц и многострочные строки — функции, которых полностью лишён INI. Для новых проектов TOML — лучший выбор; INI в основном актуален для обратной совместимости с существующими файлами конфигурации.
Чувствительность ключей к регистру зависит от реализации. Функции INI Windows нечувствительны к регистру, configparser Python по умолчанию нечувствителен к регистру для ключей, parse_ini_file PHP чувствителен к регистру для ключей, но нечувствителен для секций, а конфигурация Git нечувствительна к регистру как для секций, так и для ключей. Всегда проверяйте документацию вашего конкретного парсера. Обработка специальных символов в значениях столь же непоследовательна — некоторые парсеры поддерживают кавычки для значений в двойных кавычках, некоторые поддерживают escape-последовательности, а некоторые рассматривают всё после знака равенства как буквальное значение. Когда необходимы специальные символы, проверьте поведение вашего конкретного парсера или рассмотрите миграцию на TOML.