Парсер конфигурации 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.

← Вернуться ко всем инструментам