Ошибка парсинга ini файла что это

Обновлено: 04.07.2024

Нужен простой и удобный в использовании парсер .ini файлов — такой, — чтобы можно было делать как-нибудь так:


буду очень признателен.

Здравствуйте, Corvin, Вы писали:

C>Нужен простой и удобный в использовании парсер .ini файлов — такой, — чтобы можно было делать как-нибудь так:

C>

C>буду очень признателен.

Если кроссплатформенный -- тогда boost::program_options -- хороший вариант. Ну или ищи что-нибудь с той (линуксной) стороны.

простите мое невежество, но что такое boost?

Здравствуйте, Corvin, Вы писали:

C>Привет всем

C>Нужен простой и удобный в использовании парсер .ini файлов — такой, — чтобы можно было делать как-нибудь так:

Автор(ы): Попов Юрий Юрьевич
Дата: 23.09.2003
При разработке одной из программ я столкнулся с совершенно типовой проблемой: было необходимо использовать ini-файл для хранения конфигурационных данных программы. Задача стандартная, но в моем случае данные были совершенно разных типов (целые числа, числа с плавающей точкой, строки, цвет в кодировке RGB). Каждый из параметров должен был удовлетворять определенным ограниченям. Подходящих решений под рукой не оказалось, в связи с чем на свет появился этот компонент.

Здравствуйте, Corvin, Вы писали:

C>простите мое невежество, но что такое boost?

Автор(ы): Попов Юрий Юрьевич
Дата: 23.09.2003
При разработке одной из программ я столкнулся с совершенно типовой проблемой: было необходимо использовать ini-файл для хранения конфигурационных данных программы. Задача стандартная, но в моем случае данные были совершенно разных типов (целые числа, числа с плавающей точкой, строки, цвет в кодировке RGB). Каждый из параметров должен был удовлетворять определенным ограниченям. Подходящих решений под рукой не оказалось, в связи с чем на свет появился этот компонент.

похоже не годится, — мне нужно читать .ini — файл, структура которого мне неизвестна.

а такие ф-ции из win api не подходят?
GetPrivateProfileInt
GetPrivateProfileSection
GetPrivateProfileSectionNames
WritePrivateProfileSection
WritePrivateProfileString
WritePrivateProfileStruct
. Автор(ы): Попов Юрий Юрьевич
Дата: 23.09.2003
При разработке одной из программ я столкнулся с совершенно типовой проблемой: было необходимо использовать ini-файл для хранения конфигурационных данных программы. Задача стандартная, но в моем случае данные были совершенно разных типов (целые числа, числа с плавающей точкой, строки, цвет в кодировке RGB). Каждый из параметров должен был удовлетворять определенным ограниченям. Подходящих решений под рукой не оказалось, в связи с чем на свет появился этот компонент.



C>похоже не годится, — мне нужно читать .ini — файл, структура которого мне неизвестна.

Что-нибудь в этом духе (as is, выдрал из старого кода):

Буст правда скомпилировать придется, чтобы использовать program_options.

Здравствуйте, Tuo_Bellas, Вы писали:

T_B>Буст правда скомпилировать придется, чтобы использовать program_options.

T_B>HTH,
T_B>Tuo_Bellas.

Здравствуйте, sc, Вы писали:

sc>а такие ф-ции из win api не подходят?
sc>GetPrivateProfileInt
sc>GetPrivateProfileSection
sc>GetPrivateProfileSectionNames
sc>WritePrivateProfileSection
sc>WritePrivateProfileString
sc>WritePrivateProfileStruct
sc>.

да вот я тоже на них наткнулся — решил уже забить на кроссплатформенность, но что-то они у меня не работают — я кладу вот такой test.ini

в папку с проектом и пишу


в результате в ret попадает 0, и в str ничего.. Если путь писать как "../test.ini", то же самое.

Здравствуйте, Corvin, Вы писали:

C>Нужен простой и удобный в использовании парсер .ini файлов — такой, — чтобы можно было делать как-нибудь так:

Не так давно надо было решить почти такую же задачу, только не было условия именно на .ini-файлы, подходил любой разумный формат конфигурационных файлов. Кроссплатформенность тоже требовалась. Я посмотрел несколько библиотек и вот что могу сказать.

Использует файлы в формате Record-Jar, описанном в "The Art Of UNIX Programming". Формат интересный (я "TAOP" не читал ), библиотека предоставляет доступ к нему почти как к реляционной базе данных.

Файл Record-Jar состоит из записей и полей. Поле задается в одной строке, содержащей имя, отделенное от значения двоеточием. Значение необязательно, есть значения по умолчанию. Запись — это произвольный список полей. Состав полей в разных записях базы может различаться. Записи разделяются строкой, начинающейся с "%%". В этой же строке могут быть записаны комментарии. База данных — успешно разобранный файл Record-Jar. API предоставляет доступ как на уровне записей, так и на уровне полей. Можно использовать с разными языками: C, C++, Ch, D, Ruby, Python.

Хорошая идея омрачается реализацией. Формат файла простой, а Open-RJ тащит за собой библиотеки STLSoft, которые отличаются немаленьким объемом и в некоторых случаях конфликтуют с STLPort. Например, у них сделаны какие-то загадочные обертки вокруг итераторов, которые приводят к неработоспособности стандартных алгоритмов, например, std::copy (даже в демках!). Хотя, возможно, это проблема VS6 — не вникал особо.

Компактная и симпатичная библиотека, но для сборки под Windows требуется небольшая обработка напильником. API ориентирован на plain C, так что если хочется ОО-вкусностей, надо писать обертки. Зато есть интересные возможности, например, использование переменных окружения прямо в файлах конфигурации; для расширения возможностей можно зарегистрировать функции, которые будут вызываться прямо из файла конфигурации — сейчас такая функция одна: include(filename). Формат файла тоже довольно удобный — он структурирован при помощи фигурных скобок, соответственно, допускается произвольная степень вложенности.

Разбирает файлы с XML-подобным синтаксисом. Возможно использование специальных команд в стиле препроцессора (include, define, ifdef и еще кое-что). API, опять же сишный, но считать ли это недостатком?

Отлично собирается под Windows. Проект производит хорошее впечатление. Возможно, кому-то может не понравиться "многословность" конфиг-файла: файлы в стиле ini или с фигурными скобками получаются компактнее.

Другие библиотеки
Есть еще две очень разные библиотеки с одинаковым названием libconfig.

libconfig-0.2 (LGPL) — какая-то китайская поделка (автор Zhang Le), которая, как утверждается, является портированной частью KConfig из KDE. Код очень сырой (встречаются просто зверски закомментированные куски), демки не работают. Единственное потенциальное преимущество — легковесность. Но и файлы тоже очень простые, в стиле ini. К тому же ее разработка прекращена.

libconfig-0.4 (LGPL). Хороший компактный формат файла (похож на файлы libConfuse), но о кроссплатформенности не думали. Ориентирована исключительно на Unix-подобные системы. Что приятно — есть C++ API.

К сожалению, для сборки нужен flex-2.5.31, который под Windows, похоже, пока не портирован (в составе GnuWin32 его точно нет, поиск не помог).В принципе, можно перетащить, но, по-моему, оно того не стоит. Кто решит эту проблему — сообщите мне

Сейчас зашел на сайт — а там уже версия 0.5

Думайте сами, решайте сами

Все на свете должно происходить медленно и неправильно.

C>

C>в результате в ret попадает 0, и в str ничего.. Если путь писать как "../test.ini", то же самое.
lpFileName
[in] Pointer to a null-terminated string that specifies the name of the initialization file. If this parameter is NULL, the function searches the Win.ini file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.

Так что пиши ".\\test.ini".

Вот для этих целей наилучшим образом подходит XML. Простенький SAX-парсер умещается в 20 кб кода. Готовых либ — навалом.

Здравствуйте, Corvin, Вы писали:

C>Нужен простой и удобный в использовании парсер .ini файлов — такой, — чтобы можно было делать как-нибудь так:

Здравствуйте, ssm, Вы писали:

ssm>Здравствуйте, Corvin, Вы писали:

C>>Нужен простой и удобный в использовании парсер .ini файлов — такой, — чтобы можно было делать как-нибудь так:

Спасибо, хорошая штука. После небольшой обработки напильником заюзал в своем проекте. Красивый код

. Я добавил в него тримминг пробелов из ключей/значений, распознавание комментариев и возможность парсить неизвестные заранее .ini путем вызова функции-колбэка для каждого ключа/значения (в моем случае эта функция заполняет соответствующими значениями структуру данных, из которой потом происходит вычитка стилей для элементов управления).
Второй метод я родил сам, положившись на виндовые функции GetPrivateProfileSection и GetPrivateProfileSectionNames. Кому интересно, вот код:

(В первой строке имя без значения и без знака равенства, в предпоследней — не закрыта скобка).
Такие-то вещи надо бы отслеживать, а?

parse_ini_file() загружает ini-файл, указанный в аргументе filename , и возвращает его настройки в виде ассоциативного массива.

Структура ini-файла похожа на структуру php.ini .

Список параметров

Имя обрабатываемого ini-файла.

Установив параметр process_sections в TRUE , вы получаете многомерный массив, который включает как название отдельных настроек, так и секции. По умолчанию process_sections равен FALSE

Может принимать следующие значения: INI_SCANNER_NORMAL (по умолчанию) или INI_SCANNER_RAW . Если указано значение INI_SCANNER_RAW , то значения опций не будут обрабатываться.

Возвращаемые значения

В случае успеха настройки возвращаются в виде ассоциативного array . В случае ошибки возвращается FALSE .

Список изменений

Примеры

Константы также могут обрабатываться в ini-файлах, так что если вы объявите константу в виде значения для ini-файла до вызова parse_ini_file() , то константа будет корректно обработана. Таким образом обрабатываются только значения опций. Например:

define ( 'BIRD' , 'Dodo bird' );

// Обрабатываем без секций
$ini_array = parse_ini_file ( "sample.ini" );
print_r ( $ini_array );

// Обрабатываем с секциями
$ini_array = parse_ini_file ( "sample.ini" , true );
print_r ( $ini_array );

Результатом выполнения данного примера будет что-то подобное:

<?php
// Простая функция для сравнения результатов
function yesno ( $expression )
return( $expression ? 'Yes' : 'No' );
>

// Получаем путь к php.ini с помощью функции php_ini_loaded_file()
// функция доступна начиная с версии PHP 5.2.4
$ini_path = php_ini_loaded_file ();

// Обрабатываем php.ini
$ini = parse_ini_file ( $ini_path );

// Выводим и сравниваем значения, учтите, что использование get_cfg_var()
// даст одинаковые результаты для используемых здесь значений parsed (загруженное из файла) и loaded (используемое в данный момент)
echo '(parsed) magic_quotes_gpc = ' . yesno ( $ini [ 'magic_quotes_gpc' ]) . PHP_EOL ;
echo '(loaded) magic_quotes_gpc = ' . yesno ( get_cfg_var ( 'magic_quotes_gpc' )) . PHP_EOL ;
?>

Результатом выполнения данного примера будет что-то подобное:

Примечания

Замечание:

Эта функция не имеет никакого отношения к файлу php.ini . К моменту выполнения вашего скрипта, он уже обработан. Эта функция может быть использована для загрузки настроек вашего собственного приложения.

Замечание:

Если значение в ini-файле содержит прочие символы, кроме букв и цифр, оно должно заключаться в двойные кавычки (").

Замечание: Существует зарезервированные слова, которые нельзя использовать в качестве ключей в ini-файлах. Такими словами являются: null, yes, no, true, false, on, off, none. Значения null, off, no и false преобразуются в "". Значения on, yes и true преобразуются в "1". Символы ?<>|&

![()^" не должны использоваться в ключах и иметь какой-либо особый смысл в значениях.

parse_ini_file() загружает ini-файл, указанный в аргументе filename , и возвращает его настройки в виде ассоциативного массива.

Структура ini-файла похожа на структуру php.ini .

Список параметров

Имя обрабатываемого ini-файла. Если используется относительный путь, он оценивается относительно текущего рабочего каталога, а затем include_path.

Установив параметр process_sections в true , вы получаете многомерный массив, который включает как название отдельных настроек, так и секции. По умолчанию process_sections равен false

Может принимать следующие значения: INI_SCANNER_NORMAL (по умолчанию) или INI_SCANNER_RAW . Если указано значение INI_SCANNER_RAW , то значения опций не будут обрабатываться.

С версии PHP 5.6.1 также можно задать INI_SCANNER_TYPED . В этом режиме типы boolean, null и integer будут, по возможности, сохраняться. Строковые значения "true" , "on" и "yes" будут преобразованы в true . "false" , "off" , "no" и "none" в false . "null" преобразуется в null . Кроме этого, все числовые строки будут, по возможности, преобразованы к целым числам.

Возвращаемые значения

В случае успеха, настройки возвращаются в виде ассоциативного массива ( array ). В случае ошибки возвращается false .

Примеры

Константы (но не "магические константы" вроде __FILE__ ) также могут обрабатываться в ini-файлах, так что если вы объявите константу в виде значения для ini-файла до вызова parse_ini_file() , то константа будет корректно обработана. Только значения опций будут обрабатываться и значение должно быть просто константой. Например:

define ( 'BIRD' , 'Птица додо' );

// Обрабатываем без секций
$ini_array = parse_ini_file ( "sample.ini" );
print_r ( $ini_array );

// Обрабатываем с секциями
$ini_array = parse_ini_file ( "sample.ini" , true );
print_r ( $ini_array );

Результатом выполнения данного примера будет что-то подобное:

<?php
// Простая функция для сравнения результатов
function yesno ( $expression )
return( $expression ? 'Да' : 'Нет' );
>

// Получаем путь к php.ini с помощью функции php_ini_loaded_file(),
// которая доступна с PHP 5.2.4
$ini_path = php_ini_loaded_file ();

// Обрабатываем php.ini
$ini = parse_ini_file ( $ini_path );

// Выводим и сравниваем значения, учтите, что использование get_cfg_var()
// даст одинаковые результаты для используемых здесь значений parsed (загруженное из файла) и loaded (используемое в данный момент)
echo '(parsed) magic_quotes_gpc = ' . yesno ( $ini [ 'magic_quotes_gpc' ]) . PHP_EOL ;
echo '(loaded) magic_quotes_gpc = ' . yesno ( get_cfg_var ( 'magic_quotes_gpc' )) . PHP_EOL ;
?>

Результатом выполнения данного примера будет что-то подобное:

Помимо оценки констант, некоторые символы имеют особое значение в значении ini-файлах. Кроме того, переменные среды и ранее определенные значения могут быть прочитаны с использованием синтаксиса $<> .

Результатом выполнения данного примера будет что-то подобное:

Примечания

Замечание:

Эта функция не имеет никакого отношения к файлу php.ini . К моменту выполнения вашего скрипта, он уже обработан. Эта функция может быть использована для загрузки настроек вашего собственного приложения.

Замечание:

Если значение в ini-файле содержит прочие символы, кроме букв и цифр, оно должно заключаться в двойные кавычки (").

Замечание: Существует зарезервированные слова, которые нельзя использовать в качестве ключей в ini-файлах. Такими словами являются: null , yes , no , true , false , on , off , none . Значения null , off , no и false преобразуются в "" , а значения on , yes и true в "1" , но только если не используется режим INI_SCANNER_TYPED (доступен с PHP 5.6.1). Символы ?<>|&

!()^" не должны использоваться в ключах и иметь какой-либо особый смысл в значениях.

Замечание:

Записи без знака равенства игнорируются. Например, "foo" игнорируется, тогда как "bar =" обрабатывается и добавляется с пустым значением. Например, в MySQL есть опция "no-auto-rehash", устанавливаемая в my.cnf , которая не имеет значения и игнорируется.

Замечание:

ini-файлы обычно обрабатываются веб-серверами как простой текст и, таким образом, по запросу передаются браузерам. Это означает, что в целях безопасности вы должны либо хранить свои ini-файлы вне корневого каталога документов, либо перенастроить веб-сервер, чтобы они не обслуживались. Невыполнение любого из этих требований может создать угрозу безопасности.

The ConfigParser module has been renamed to configparser in Python 3. The 2to3 tool will automatically adapt imports when converting your sources to Python 3.

Этот модуль определяет класс ConfigParser . Он реализует язык базового парсера файла конфигурации, который предоставляет структуру, похожую на то, что Вы видите в файлах INI Windows. Вы можете использовать его для написания программ на Pythonб которые легко могут настраиваться пользователями.

Эта библиотека не интерпретирует или записывает префиксы типа значения, используемые в версии Windows Registry extended синтаксиса INI.

Модуль shlex Поддержка создания Unix shell-подобных миниязыков, которые могут быть использованы как альтернативный формат для настроечных файлов приложений. Модуль json Модуль json реализует подмножествно синтаксиса JavaScript, который можно исопльзовать для той же цели.

Кроме основной функциональности, класс SafeConfigParser поддерживает интерполяцию. Это означает, что значения могут содержать форматированные строки, которые ссылаются на другие значения в том же разделе или на значения в специальном разделе

DEFAULT . Дополнительные значения по умолчанию могут быть предоставлены при инициализации.

разрешит %(dir)s в значение dir ( frob в этом примере). Все такие разрешения происходят по запросу.

Значения по умолчанию можно определить, передав их в конструктор ConfigParser при помощи словаря. Дополнительные значения по умолчанию можно передать в метод get() , который переопределит другие значения.

Разделы обычно хранятся как встроенные словари. Альтернативный тип словаря может быть передан конструктору ConfigParser . Например, если переданный тип словаря сортирует свои ключи, то разделы будут отсортированы при обратной записи, как и ключи в каждом разделе.

class ConfigParser. RawConfigParser ( [ defaults [ , dict_type [ , allow_no_value ] ] ] ) ¶

Базовый объект конфигурации. Когда передан defaults, то его значения используются для задания значений по умолчанию. Если задан dict_type, то он будет использоваться для создания объекта словаря для списка разделов, для опций в разделах и для значений по умолчанию. Если allow_no_value=True (по умолчанию: False ), то опции могут не содержать значений; в таком случае значением будет None .

Все имена опций передаётся через метод optionxform() . Его реализация по умолчанию преобразует все имена в нижний регистр.

New in version 2.3.

Changed in version 2.6: добавлен dict_type.

Changed in version 2.7: dict_type по умолчанию - collections.OrderedDict . добавлено allow_no_value.

class ConfigParser. ConfigParser ( [ defaults [ , dict_type [ , allow_no_value ] ] ] ) ¶

Имена всех опций, используемых в интерполяции будут переданы через метод optionxform() так же, как любые другие ссылки на имена опций. При реализации по умолчанию метода optionxform() , значения foo %(bar)s и foo %(BAR)s эквивалентны.

New in version 2.3.

Changed in version 2.6: добавлен dict_type.

Changed in version 2.7: dict_type по умолчанию - collections.OrderedDict . добавлено allow_no_value.

class ConfigParser. SafeConfigParser ( [ defaults [ , dict_type [ , allow_no_value ] ] ] ) ¶

New in version 2.3.

Changed in version 2.6: добавлен dict_type.

Changed in version 2.7: dict_type по умолчанию - collections.OrderedDict . добавлено allow_no_value.

Базовый класс для всех исключений модуля.

exception ConfigParser. NoSectionError ¶

Исключение, возбуждаемое, когда определённый раздел не найден.

exception ConfigParser. DuplicateSectionError ¶

Исключение возбуждается если add_section() вызывается с имененем раздела, который уже существует.

exception ConfigParser. NoOptionError ¶

Исключение возбуждается еогда поределённая опция не найдена в определённом разделе.

exception ConfigParser. InterpolationError ¶

Базовый класс для исключений, возникающий при проблемах со строковой интерполяции.

exception ConfigParser. InterpolationDepthError ¶

Исключение, возникающее когда интерполяция строки не может быть завершена так как число итераций превысило MAX_INTERPOLATION_DEPTH . Подкласс InterpolationError .

exception ConfigParser. InterpolationMissingOptionError ¶

Исключения, возникающее, когда опция, на которую ссылается значение, не существует. Подкласс InterpolationError .

New in version 2.3.

Исключение, возникающее, когда исходный текст, в который должна быть сделана подстановка, не отвечает требуемуму синтаксису. Подкласс InterpolationError .

New in version 2.3.

Исключение, возникающее, когда пытаются разобрать файл, который не содержит заголовки разделов.

exception ConfigParser. ParsingError ¶

Исключение, возникающее, когда ошибка возникает при попытке разобрать файл.

Максимальная глубина рекурсивной интерполяции для get() , если raw=False. Это актуально только для класса ConfigParser .

Модуль shlex Поддержка шелл-подобных мини-языков Unix, которые можно использовать как альтернативный формат для файлов конфигурации.

RawConfigParser Objects¶

Экземпляры RawConfigParser имеют следующие методы:

Возвращает словарь, содержащий значения по умолчанию для экземпляра.

Возвращает список доступных разделов; DEFAULT не присутствует.

RawConfigParser. add_section ( section ) ¶

Добавляет раздел с именем section в экзмепляр. Если раздел с таким имененм уже существует, возбуждается DuplicateSectionError . Если передано имя DEFAULT (или любой вариант его написания), возбуждается исключеине ValueError .

RawConfigParser. has_section ( section ) ¶

Сообщает, присутствует ли переданный раздел в конфигурации. Раздел DEFAULT не распознаётся.

RawConfigParser. options ( section ) ¶

Возвращает список доступных опций в указанном разделе.

RawConfigParser. has_option ( section, option ) ¶

Если данный раздел существует и содержит данную опцию, возвращает True ; иначе - False .

New in version 1.6.

Пробует прочитать и разобрать список имён файлов, возвращая список имён файлов, которые удалось разобрать. Если filenames - строка или юникод, то она трактуется как имя одного файла. Если filenames не может быть открыт, то такой файл игнорируется. Это сделано специально, чтобы Вы могли определить список мест, где могут находиться файлы конфигурации (напирмер, текущий каталог, домашний каталог пользователя, какие-то системные каталоги) и все существующие конфигурационные файлы в списке будут прочитаны. Если ни один из указанных файлов не существует, то экземпляр ConfigParser будет содержать пустой набор данных. Если приложению нужны начальные значения из файла/файлов, должно загрузить их при помощи readfp() до вызова read() для всех остальных опциональных файлов:

Changed in version 2.4: Возвращает список удачно разобранных имён файлов.

Прочитывает и разбирает конфигурационные настройки из файла или файло-подобного объекта fp (используется только метод readline() ). Если filename не указано и fp имеет атрибует name , то он используется вместо filename; по умолчанию <. > .

RawConfigParser. get ( section, option ) ¶

Получить значение option для раздела section.

RawConfigParser. getint ( section, option ) ¶

Общепринятый метод для преобразования option в определённом section в число.

RawConfigParser. getfloat ( section, option ) ¶

Общепринятый метод для преобразования option в определённом section в число с плавающей точкой.

RawConfigParser. getboolean ( section, option ) ¶

Общепринятый метод для преобразования option в определённом section в логическое значение. Обратите внимание, что допустимыми значениями для опции являются "1" , "yes" , "true" , и "on" , для которых метод вернёт True , и "0" , "no" , "false" , и "off" , для которых он вернёт False . Эти строковые значения проверяются независимо от регистра. Все другие значения будут вызывать ValueError .

RawConfigParser. items ( section ) ¶

Возвращает список пар (имя, значение) для каждой опции в разделе section.

RawConfigParser. set ( section, option, value ) ¶

Если указанный раздел существует, задаёт определённой опции данное значение. В противном случае вызывает NoSectionError . Так как возможно использовать RawConfigParser (или ConfigParser с сырыми параметрами, установленными в true) для внутреннего хранения нестроковых значений, полная функциональность (включая интерполяцию и вывод в файл) может быть доступна только при использовании строковых значений.

New in version 1.6.

Записывает представление конфигурации в данный объект файла. Это представление можно в будущем разобрать при помощи вызова read() .

New in version 1.6.

Удаляет данную опцию option из данного раздела section. Если раздел не существует, вызывается NoSectionError . Если опция была удалена, возвращает True ; иначе - False .

New in version 1.6.

Удаляет данный раздел section из конфигруации. Если этот раздел существовал, возвращает True , иначе - False .

RawConfigParser. optionxform ( option ) ¶

Преобразует имя опции option из того, каким оно указано в файле или получено из кода в форму, которая должна использоваться во внутреннем представлении. Реализация по умолчанию возвращает имя опции в нижнем регистре. Подклассы могут переопределять это поведение или же клиентский код может установить этот атрибут для экзмемпляра класса, чтобы повлиять на это поведение.

Вам не обязательно иметь подкласс ConfigParser, чтобы использовать этот метод. Вы также можете заменить его для экземлпяра на функцию, которая принимает строковый аргумент. Если, например, вместо него использовать str , то имена ваших опций будут зависеть от регистра:

Обратите внимание, что когда читается конфигурационный файл, пробелы вокруг имеён опций удаляются до вызова optionxform() .

ConfigParser Objects¶

Класс ConfigParser расширяет некоторые методы интерфейса RawConfigParser , добавляя некоторые опциональные аргументы.

ConfigParser. get ( section, option [ , raw [ , vars ] ] ) ¶

Получает значение опции option из раздела section. Если передан vars, то он должен быть словарём. Опция option последовательно ищется в vars (если есть), section, и затем в defaults.

Все интерполяции '%' расширяются в возвращаемом значении, только если аргумент raw истинен. Значения для интерполяции ключей ищутся также, как для значений.

ConfigParser. items ( section [ , raw [ , vars ] ] ) ¶

Возвращает список пар (name, value) для каждой опции в данном разделе section. Необязательные аргументы имеют то же значение, что в методе get() .

New in version 2.3.

Объекты SafeConfigParser¶

Класс SafeConfigParser реализует такой же расширенный интерфейс, что и ConfigParser , со следующими дополнениями:

SafeConfigParser. set ( section, option, value ) ¶

Если переданный раздел существует, устанавливает переданную опцию в переданное значение. В противном случае вызывается NoSectionError . value должно быть строкой ( str или unicode ); в противном случае вызывается TypeError .

New in version 2.4.

Примеры¶

Пример записи в конфигурационный файл:

Пример чтения конфигурационного файла:

Для того, чтобы использовать интерполяцию, Вам нужен ConfigParser или SafeConfigParser :

Значения по умолчанию доступны для всех трёх типов ConfigParsers. Они используются для интерполяциии если требуемое для неё значение нигде не определено.

Функция opt_move может быть использована для перемещения опций между разделами:

Некоторые конфигурационные файлы содержат настройки без значений, которые, тем не менее, соответствуют синтаксису, поддерживаемому ConfigParser . Параметр allow_no_value, переданный в конструктор, может быть использован для обозначения того, что эти опции тоже должны учитываться:

Читайте также: