Класс синтаксического анализатора INI-файлов ConfigParserparser.ConfigParser()
представляет следующие методы своего экземпляра.
В примерах будем использовать такой INI-файл:
# defaults.cfg [DEFAULT] AliveInterval = 45 Compres = yes CompresLevel = 9 ForwardX11 = yes [one] User = hg [two] Port = 50022 ForwardX11 = no
DEFAULT
ConfigParser.defaults()
,ConfigParser.sections()
,ConfigParser.add_section()
,ConfigParser.has_section()
,ConfigParser.options()
,ConfigParser.has_option()
,ConfigParser.read()
,ConfigParser.read_file()
,ConfigParser.read_string()
,ConfigParser.read_dict()
,ConfigParser.get()
,int
ConfigParser.getint()
,float
ConfigParser.getfloat()
,bool
ConfigParser.getboolean()
,(section_name, section_proxy)
ConfigParser.items()
,ConfigParser.set()
,ConfigParser.write()
,ConfigParser.remove_option()
,ConfigParser.remove_section()
,ConfigParser.optionxform()
,ConfigParser.readfp()
,ConfigParser.defaults()
:Метод ConfigParser.defaults()
возвращает словарь, содержащий значения секции по умолчанию DEFAULT
для всего экземпляра.
>>> import configparser >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... cfg.read_file(fp) >>> cfg.defaults() # OrderedDict([('aliveinterval', '45'), # ('compres', 'yes'), # ('compreslevel', '9'), # ('forwardx11', 'yes')])
ConfigParser.sections()
:Метод ConfigParser.sections()
возвращает список доступных разделов. Раздел по умолчанию DEFAULT
не включен в список.
>>> import configparser >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... cfg.read_file(fp) >>> cfg.sections() # ['one', 'two']
ConfigParser.add_section(section)
:Метод ConfigParser.add_section()
добавляет раздел с именем section
к объекту ConfigParserParser
.
Если раздел с данным именем уже существует, вызывается исключение DuplicateSectionError
. Если передано имя раздела по умолчанию DEFAULT
, то вызывается исключение ValueError
. Название раздела должно быть строкой. Если передан другой тип, то вызывается исключение TypeError
.
>>> import configparser >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... cfg.read_file(fp) >>> cfg.sections() # ['one', 'two'] >>> cfg.add_section('three') >>> cfg.sections() # ['one', 'two', 'three']
ConfigParser.has_section(section)
:Метод ConfigParser.has_section()
указывает, присутствует ли указанный секция section
в конфигурации. Раздел по умолчанию DEFAULT
не проверяется.
>>> import configparser >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... cfg.read_file(fp) >>> cfg.has_section('three') # True
ConfigParser.options(section)
:Метод ConfigParser.options()
возвращает список опций, доступных в указанной секции section
.
>>> import configparser >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... cfg.read_file(fp) >>> cfg.options('two') # ['port', 'forwardx11', 'aliveinterval', # 'compres', 'compreslevel']
ConfigParser.has_option(section, option)
:Метод ConfigParser.has_option()
проверяет, если данный раздел section
существует и содержит данную опцию option
, то возвращает True
. В противном случае вернет False
. Если указанным разделом является None
или пустая строка, предполагается значение из DEFAULT
.
>>> import configparser >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... cfg.read_file(fp) >>> cfg.has_option('one', 'user') # True >>> cfg.has_option('one', 'compres') # True >>> cfg.has_option('one', 'port') # False
ConfigParser.read(filenames, encoding=None)
:Метод ConfigParser.read()
попытайтесь прочитать и проанализировать итерацию имен файлов filenames
, возвращая список имен файлов, которые были успешно проанализированы.
Если filenames
является строкой, байтовой строкой или объект подобным пути, то он обрабатывается как одно имя файла. Если файл с именем в filenames
не может быть открыт, то этот файл будет игнорироваться. Это сделано для того, чтобы можно было указать итерацию потенциальных местоположений файлов конфигурации: например текущий каталог, домашний каталог пользователя и некоторый общесистемный каталог и все существующие файлы конфигурации в этой итерации будут прочитаны.
Если ни один из названных файлов не существует, экземпляр ConfigParserParser
будет содержать пустой набор данных. Приложение, которое требует загрузки начальных значений из файла, должно загрузить требуемый файл или файлы с помощью метода ConfigParser.read_file()
перед вызовом метода ConfigParser.read()
для любых необязательных файлов:
import configparser, os config = configparser.ConfigParser() with open('defaults.cfg') as fp: cfg.read_file(fp) config.read(['site.cfg', os.path.expanduser('~/.myapp.cfg')], encoding='cp1250')
ConfigParser.read_file(f, source=None)
:Метод ConfigParser.read_file()
читает и анализирует данные конфигурации из объекта f
, который должен быть итерируемым и выдавать строки Unicode. Аргументом f
например может быть файл, открытый в текстовом режиме.
Необязательный аргумент source
указывает имя читаемого файла. Если source
не указан, а аргумент f
имеет атрибут name
, то он будет использоваться для источника. По умолчанию '<???>'
.
>>> import configparser, os >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... cfg.read_file(fp) ... >>> cfg.sections() # ['one', 'two']
ConfigParser.read_string(string, source='<string>')
:Метод ConfigParser.read_string()
разбирает данные конфигурации из строки.
Необязательный аргумент source
указывает зависящее от контекста имя передаваемой строки. Если не указано, используется строка. Обычно это путь к файловой системе или URL.
>>> import configparser, os >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... data = fp.read() ... >>> cfg.read_string(data) >>> cfg.sections() # ['one', 'two']
ConfigParser.read_dict(dictionary, source='<dict>')
:Метод ConfigParser.read_dict()
загружает конфигурацию из любого объекта, который предоставляет dict-подобный метод dict.items()
. Ключи - это имена разделов, значения - это словари с ключами и значениями, которые должны присутствовать в разделе. Если используемый тип словаря сохраняет порядок, то разделы и их ключи будут добавляться по порядку. Значения автоматически преобразуются в строки.
Необязательный аргумент source
указывает зависящее от контекста имя передаваемого словаря. Если не указан, то используется dict
.
Этот метод может использоваться для копирования состояния между анализаторами.
ConfigParser.get(section, option, *, raw=False, vars=None[, fallback])
:Метод ConfigParser.get()
получает значение параметра для указанной секции section
. Если указан vars
, то это должен быть словарь. Опция option
ищется в vars
(если есть), section
и в DEFAULTSECT
в этом порядке. Если ключ не найден и предусмотрен аргумент fallback
, то он используется в качестве запасного значения. Значение None
не может быть предоставлено в качестве запасного значения.
Все интерполяции '%'
раскрываются в возвращаемых значениях, если аргумент raw=True
. Значения для ключей интерполяции ищутся так же, как опция option
.
Примеры использования метода ConfigParser.get()
смотрите в разделе "Значения ключей DEFAULT
модуля ConfigParserparser
в Python".
ConfigParser.getint(section, option, *, raw=False, vars=None[, fallback])
:Метод ConfigParser.getint()
приводит параметр в указанной секции section
к целому числу.
Для объяснения аргументов raw
, vars
и fallback
смотрите метод ConfigParser.get
.
Примеры использования метода ConfigParser.getint()
смотрите в разделе "Типы данных поддерживаемые модулем ConfigParserparser
".
ConfigParser.getfloat(section, option, *, raw=False, vars=None[, fallback])
:Метод ConfigParser.getfloat()
приводит параметр в указанной секции section
к числу с плавающей запятой.
Для объяснения аргументов raw
, vars
и fallback
смотрите метод ConfigParser.get
.
Примеры использования метода ConfigParser.getint()
смотрите в разделе "Типы данных поддерживаемые модулем ConfigParserparser
".
ConfigParser.getboolean(section, option, *, raw=False, vars=None[, fallback])
:Метод ConfigParser.getboolean()
приводит параметр в указанной секции section
к логическому значению.
Обратите внимание, что допустимыми значениями для параметра являются '1'
, 'yes'
, 'true'
и 'on'
, в результате чего этот метод возвращает значение True
, а также '0'
, 'no'
, 'false'
и 'off'
, что заставляет его возвращать False
. Эти строковые значения проверяются без учета регистра. Любое другое значение вызовет исключение ValueError
.
Для объяснения аргументов raw
, vars
и fallback
смотрите метод ConfigParser.get
.
Примеры использования метода ConfigParser.getint()
смотрите в разделе "Типы данных поддерживаемые модулем ConfigParserparser
".
ConfigParser.items(raw=False, vars=None)
ConfigParser.items(section, raw=False, vars=None)
:Метод ConfigParser.items()
возвращает список пар (section_name, section_proxy)
включая DEFAULTSECT
, если секция section
не указана .
В противном случае, возвращает список пар (name, value) для параметров в данной секции section
. Необязательные аргументы имеют то же значение, что и для метода ConfigParser.get
.
>>> import configparser >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... cfg.read_file(fp) >>> cfg.items('two') # [('aliveinterval', '45'), # ('compres', 'yes'), # ('compreslevel', '9'), # ('forwardx11', 'no'), # ('port', '50022')]
ConfigParser.set(section, option, value)
:Метод ConfigParser.set()
устанавливает для указанной опции option
указанное значение value
если указанная секция section
существует. В противном случае вызывается исключение NoSectionError
. Опция и значение должны быть строками, если нет, то вызывается исключение TypeError
.
>>> import configparser >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... cfg.read_file(fp) >>> cfg.set('one', 'init', '150') >>> cfg.has_option('one', 'init') # True
ConfigParser.write(fileobject, space_around_delimiters=True)
:Метод ConfigParser.write()
записывает представление конфигурации в указанный файловый объект, который необходимо открыть в текстовом режиме. Это представление может быть проанализировано будущим вызовом read (). Если space_around_delimiters
имеет значение True
, то разделители между ключами и значениями заключаются в пробелы.
>>> import configparser >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... cfg.read_file(fp) # код настройки INI-файла ... ... ... # сохранение конфигурации >>> with open('defaults.cfg', '') as fp: ... cfg.write(fp)
ConfigParser.remove_option(section, option)
:Метод ConfigParser.remove_option()
удаляет указанную опцию option
из указанной секции section
.
section
не существует, то вызывается исключение NoSectionError
. option
существует для удаления, то возвращает True
, в противном случае возвращает False
.>>> import configparser >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... cfg.read_file(fp) >>> cfg.remove_option('one', 'init') # True >>> cfg.has_option('one', 'init') # False
ConfigParser.remove_section(section)
:Метод ConfigParser.remove_section()
удаляет указанную секцию section
из конфигурации. Если секция действительно существует, то возвращает True
, в противном случае возвращает False
.
>>> import configparser >>> cfg = configparser.ConfigParser() >>> with open('defaults.cfg') as fp: ... cfg.read_file(fp) >>> cfg.remove_section('three') # True >>> cfg.has_section('three') # False
ConfigParser.optionxform(option)
:Метод ConfigParser.optionxform()
преобразует имя параметра option
, найденное во входном файле или передаваемое клиентским кодом, в форму, которая должна использоваться во внутренних структурах. Реализация по умолчанию возвращает строчную версию option
. Подклассы могут переопределить это поведение или клиентский код может установить атрибут этого имени в экземплярах, чтобы повлиять на это поведение.
Не нужно создавать подкласс синтаксического анализатора для использования этого метода, можно установить его для экземпляра функции, которая принимает строковый аргумент и возвращает строку. Например установка его в str
сделает имена параметров чувствительными к регистру:
>>> import configparser >>> cfg = configparser.ConfigParser() >>> cfg.optionxform = str
Обратите внимание, что при чтении файлов конфигурации, перед вызовом метода ConfigParser.optionxform()
, пробелы вокруг имен option
удаляются.
ConfigParser.readfp(fp, filename=None)
:Метод ConfigParser.readfp()
считается устаревшим с версии Python-3.2.
Вместо ConfigParser.readfp(fp)
используйте метод ConfigParser.read_file()
и функцию readline_generator(fp)
, код которой приводится ниже.
def readline_generator(fp): line = fp.readline() while line: yield line line = fp.readline()