Пока изучаю python, решил перевести часть документации. Вот кусочек по парсингу конфигурационных файлов.
Док: http://docs.python.org/library/configparser.html#ConfigParser.ConfigParser
Перевод, odt формат : http://dl.dropbox.com/u/25895838/ConfigParser.odt
ConfigParser – Парсер(анализатор) конфигурационных файлов
Важно: модуль ConfigParser переименован в configparser в Python 3.0. Утилита 2to3 автоматически это исправит при конвертировании кода в 3.0.
В этом модуле определен класс ConfigParser. ConfigParser класс имеет простой язык для анализа конфигурационных файлов, имеющих структуру подобную, INI файлам в Microsoft Windows. Вы можете это использоваться для написания Python программ, которые легко могут быть настроены пользователем.
Важно: Эта библиотека не интерпретирует и не пишет тип значения используемого в Windows Registry с расширенным синтакисом INI файлов.
Также смотри:
Модуль shlex
Поддерживает создание Unix shell-like мини-языков, которые могут быть использованы, в качестве дополнительного формата конфигурационных файлов программ.
Модуль json
Json модуль содержит подмножество синтаксиса JavaScript, который также может использоваться с этой целью
Конфигурационный файл состоит из секций, секция начинается с заголовка , за ним следует имя: значение, с продолжением в стиле RFC 822 (смотри раздел 3.1.1, ““LONG HEADER FIELDS”); имя=значение также разрешено. Помните, что пробелы перед значением удаляются. Определенные значения могут содержать специальные строки, которые обращаются к другим значениям в той же секции или к значениям расположенным в специальной DEFAULT секции. Дополнительные значения “по умолчанию” могут быть использованы при инициализации и извлечении. Строки начинающиеся с ‘#’ и ‘;’ игнорируются, и могут быть использованы для комментариев.
Конфигурационный файлы могут содержать комментарии, которые начинаются с ‘#’ и ‘;’ . Комментарии могут находиться на отдельной строке, после значения, после названия секции. В последнем случае нужен пробел перед комментарием, для распознавания, что это комментарий. (Для обратной совместимости комментарий после значения, может начинаться только после символа ‘;’, символ ‘#’ не поддерживается.)
Вдобавок к основной функциональности, SafeConfigParser поддерживает интерполяцию. Это означает, что значения могут содержать специальные строки, которые обращаются к другим значениям в этой же секции или к значения в специальной DEFAULT секции. Дополнительные значения “по умолчанию” могут быть использованы при инициализации.
На пример:
foodir: %(dir)s/whatever
dir=frob
long: это значение продолжается
на следующей строке
значение %(dir)s обращается к значению dir (содержит frob).
Значения по умолчанию могут быть определены, путем передачи их в конструктор ConfigParser как словарь. Отдельные значения “по умолчанию” могут быть переданы в метод get(), который переопределит все другие.
(Sections are normally stored in a built-in dictionary. An alternative dictionary type can be passed to the ConfigParser constructor. For example, if a dictionary type is passed that sorts its keys, the sections will be sorted on write-back, as will be the keys within each section.)
Секции обычно сохранены во встроенном словаре. Как альтернатива тип словаря можно передать конструктору ConfigParser. На пример, если тип словаря передает сортировать его ключи, секции будут отсортированы в обратном порядке, ключи будут в пределах каждого раздела. ***
class ConfigParse.RawConfigParser([defaults[, dict_type]])
Объект базовой настройки. Когда значение по умолчанию задано, оно инициализируется в словари внутренних значений по умолчанию. Когда dict_type будет дан, он будет использоваться, чтобы создать объекты словаря для списка секций, для опций в секциях и для значений по умолчанию. Когда allow_no_value – true (по умолчанию: false), опции без значений разрешены, значение для устанавивается None.
Этот класс не поддерживает волшебное поведение интерполяции.
Все имена опций передаются через метод optionxform(). По умолчанию выполняется преобразование имен опций к нижнему регистру.
Введено в версии 2.3
Изменено в версии 2.6: добавлен dict_type
Изменено в версии 2.7: По умолчанию dict_type это collections.OrderedDict, добавлен allow_no_value
class ConfigParser.ConfigParser([defaults[, dict_type]])
Производный класс от ConfigParser, который реализует функцию волшебной интерполяции и добавляет дополнительные аргументы к методам get() и items(). Значения по умолчанию должны быть подходящими для % () s строковой интерполяции. Отметьте, что __name__ является внутренним значением по умолчанию; его значение - имя раздела, и переопределяет любое значение по умолчанию.
Все имена опций, используемые в интерполяции должны передоваться через метод optionxform(), как и любое другое имя ссылки на опцию. Используя стандартный optionxform(), значения foo %(bar)s и foo %(BAR)s эквивалентны
Введено в версии 2.3
Изменено в версии 2.6: добавлен dict_type
Изменено в версии 2.7: По умолчанию dict_type это collections.OrderedDict, добавлен allow_no_value
.
class ConfigParser.SafeConfigParser([defaults[, dict_type]])
Производный класс от ConfigParser, который реализует более нормальный вариант функции волшебной интерполяции. Эта реализация также более предсказуемая. В новых приложениях лучше использовать эту версию, если они не должны быть совместимыми с более старыми версиями Python.
Введено в версии 2.3
Изменено в версии 2.6: добавлен dict_type
Изменено в версии 2.7: По умолчанию dict_type это collections.OrderedDict, добавлен allow_no_value
exception ConfigParser.Error
Базовый класс для всех остальных configparser исключений.
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.
Введено в версии 2.3
exception ConfigParser.InterpolationSyntaxError
Исключение возникает, когда исходный текст, в котором сделаны замены, не соответствует необходимому синтаксису. Подкласс InterpolationError.
Введено в версии 2.3
exception ConfigParser.MissingSectionHeaderError
Исключение возникает, при попытке проанализировать файл, который не содержит заголовков секций.
exception ConfigParser.ParsingError
Исключение возникает, когда происходит ошибка при анализе файла.
ConfigParser.MAX_INTERPOLATION_DEPTH
Максимальная глубина для рекурсивной интерполяции для get(), когда необработанный параметр – false. Это важно только для класса ConfigParser.