Python windows config file

Методы объекта ConfigParser в Python.

Доступные операции с файлами конфигураций.

Класс синтаксического анализатора INI-файлов configparser.ConfigParser() представляет следующие методы своего экземпляра.

В примерах будем использовать такой INI-файл:

Содержание:

  • Значения секции DEFAULT config.defaults() ,
  • Список доступных разделов config.sections() ,
  • Добавить секцию config.add_section() ,
  • Проверить наличие секции config.has_section() ,
  • Получить список доступных опций в секции config.options() ,
  • Проверить наличие опции в секции config.has_option() ,
  • Прочитать итерацию INI-файлов config.read() ,
  • Прочитать INI-файл config.read_file() ,
  • Причитать конфигурацию из строки config.read_string() ,
  • Причитать конфигурацию из словаря config.read_dict() ,
  • Получить параметр из секции config.get() ,
  • Привести параметр к int config.getint() ,
  • Привести параметр к float config.getfloat() ,
  • Привести параметр к bool config.getboolean() ,
  • Получить список пар (sectionname, sectionproxy) config.items() ,
  • Установить значение для опции в указанной секции config.set() ,
  • Записать конфигурацию в файл config.write() ,
  • Удалить опцию в указанной секции config.remove_option() ,
  • Удалить секцию config.remove_section() ,
  • Преобразовать опцию в форму, используемую конфигурацией config.optionxform() ,
  • Считается устаревшим config.readfp() ,

config.defaults() :

Метод config.defaults() возвращает словарь, содержащий значения секции по умолчанию DEFAULT для всего экземпляра.

config.sections() :

Метод config.sections() возвращает список доступных разделов. Раздел по умолчанию DEFAULT не включен в список.

config.add_section(section) :

Метод config.add_section() добавляет раздел с именем section к объекту ConfigParser .

Если раздел с данным именем уже существует, вызывается исключение DuplicateSectionError . Если передано имя раздела по умолчанию DEFAULT , то вызывается исключение ValueError . Название раздела должно быть строкой. Если передан другой тип, то вызывается исключение TypeError .

config.has_section(section) :

Метод config.has_section() указывает, присутствует ли указанный секция section в конфигурации. Раздел по умолчанию DEFAULT не проверяется.

config.options(section) :

Метод config.options() возвращает список опций, доступных в указанной секции section .

config.has_option(section, option) :

Метод config.has_option() проверяет, если данный раздел section существует и содержит данную опцию option , то возвращает True . В противном случае вернет False . Если указанным разделом является None или пустая строка, предполагается значение из DEFAULT .

config.read(filenames, encoding=None) :

Метод config.read() попытайтесь прочитать и проанализировать итерацию имен файлов filenames , возвращая список имен файлов, которые были успешно проанализированы.

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

Если ни один из названных файлов не существует, экземпляр ConfigParser будет содержать пустой набор данных. Приложение, которое требует загрузки начальных значений из файла, должно загрузить требуемый файл или файлы с помощью метода config.read_file() перед вызовом метода config.read() для любых необязательных файлов:

config.read_file(f, source=None) :

Метод config.read_file() читает и анализирует данные конфигурации из объекта f , который должен быть итерируемым и выдавать строки Unicode. Аргументом f например может быть файл, открытый в текстовом режиме.

Необязательный аргумент source указывает имя читаемого файла. Если source не указан, а аргумент f имеет атрибут name , то он будет использоваться для источника. По умолчанию ‘ ‘ .

config.read_string(string, source=’ ‘) :

Метод config.read_string() разбирает данные конфигурации из строки.

Необязательный аргумент source указывает зависящее от контекста имя передаваемой строки. Если не указано, используется строка. Обычно это путь к файловой системе или URL.

config.read_dict(dictionary, source=’ ‘) :

Метод config.read_dict() загружает конфигурацию из любого объекта, который предоставляет dict-подобный метод dict.items() . Ключи — это имена разделов, значения — это словари с ключами и значениями, которые должны присутствовать в разделе. Если используемый тип словаря сохраняет порядок, то разделы и их ключи будут добавляться по порядку. Значения автоматически преобразуются в строки.

Читайте также:  Командная строка windows чтение файла

Необязательный аргумент source указывает зависящее от контекста имя передаваемого словаря. Если не указан, то используется dict .

Этот метод может использоваться для копирования состояния между анализаторами.

config.get(section, option, *, raw=False, vars=None[, fallback]) :

Метод config.get() получает значение параметра для указанной секции section . Если указан vars , то это должен быть словарь. Опция option ищется в vars (если есть), section и в DEFAULTSECT в этом порядке. Если ключ не найден и предусмотрен аргумент fallback , то он используется в качестве запасного значения. Значение None не может быть предоставлено в качестве запасного значения.

Все интерполяции ‘%’ раскрываются в возвращаемых значениях, если аргумент raw=True . Значения для ключей интерполяции ищутся так же, как опция option .

Примеры использования метода config.get() смотрите в разделе «Значения ключей DEFAULT модуля configparser в Python».

config.getint(section, option, *, raw=False, vars=None[, fallback]) :

Метод config.getint() приводит параметр в указанной секции section к целому числу.

Для объяснения аргументов raw , vars и fallback смотрите метод config.get .

Примеры использования метода config.getint() смотрите в разделе «Типы данных поддерживаемые модулем configparser «.

config.getfloat(section, option, *, raw=False, vars=None[, fallback]) :

Метод config.getfloat() приводит параметр в указанной секции section к числу с плавающей запятой.

Для объяснения аргументов raw , vars и fallback смотрите метод config.get .

Примеры использования метода config.getint() смотрите в разделе «Типы данных поддерживаемые модулем configparser «.

config.getboolean(section, option, *, raw=False, vars=None[, fallback]) :

Метод config.getboolean() приводит параметр в указанной секции section к логическому значению.

Обратите внимание, что допустимыми значениями для параметра являются ‘1’ , ‘yes’ , ‘true’ и ‘on’ , в результате чего этот метод возвращает значение True , а также ‘0’ , ‘no’ , ‘false’ и ‘off’ , что заставляет его возвращать False . Эти строковые значения проверяются без учета регистра. Любое другое значение вызовет исключение ValueError .

Для объяснения аргументов raw , vars и fallback смотрите метод config.get .

Примеры использования метода config.getint() смотрите в разделе «Типы данных поддерживаемые модулем configparser «.

config.items(raw=False, vars=None)
config.items(section, raw=False, vars=None) :

Метод config.items() возвращает список пар (section_name, section_proxy) включая DEFAULTSECT , если секция section не указана .

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

config.set(section, option, value) :

Метод config.set() устанавливает для указанной опции option указанное значение value если указанная секция section существует. В противном случае вызывается исключение NoSectionError . Опция и значение должны быть строками, если нет, то вызывается исключение TypeError .

config.write(fileobject, space_around_delimiters=True) :

Метод config.write() записывает представление конфигурации в указанный файловый объект, который необходимо открыть в текстовом режиме. Это представление может быть проанализировано будущим вызовом read (). Если space_around_delimiters имеет значение True , то разделители между ключами и значениями заключаются в пробелы.

config.remove_option(section, option) :

Метод config.remove_option() удаляет указанную опцию option из указанной секции section .

  • Если секция section не существует, то вызывается исключение NoSectionError .
  • Если опция option существует для удаления, то возвращает True , в противном случае возвращает False .

config.remove_section(section) :

Метод config.remove_section() удаляет указанную секцию section из конфигурации. Если секция действительно существует, то возвращает True , в противном случае возвращает False .

config.optionxform(option) :

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

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

3. Writing the Setup Configuration File¶

This document is being retained solely until the setuptools documentation at https://setuptools.readthedocs.io/en/latest/setuptools.html independently covers all of the relevant information currently included here.

Читайте также:  Windows 10 не видит ssd samsung 960 evo

Often, it’s not possible to write down everything needed to build a distribution a priori: you may need to get some information from the user, or from the user’s system, in order to proceed. As long as that information is fairly simple—a list of directories to search for C header files or libraries, for example—then providing a configuration file, setup.cfg , for users to edit is a cheap and easy way to solicit it. Configuration files also let you provide default values for any command option, which the installer can then override either on the command-line or by editing the config file.

The setup configuration file is a useful middle-ground between the setup script—which, ideally, would be opaque to installers 1—and the command-line to the setup script, which is outside of your control and entirely up to the installer. In fact, setup.cfg (and any other Distutils configuration files present on the target system) are processed after the contents of the setup script, but before the command-line. This has several useful consequences:

installers can override some of what you put in setup.py by editing setup.cfg

you can provide non-standard defaults for options that are not easily set in setup.py

installers can override anything in setup.cfg using the command-line options to setup.py

The basic syntax of the configuration file is simple:

where command is one of the Distutils commands (e.g. build_py, install), and option is one of the options that command supports. Any number of options can be supplied for each command, and any number of command sections can be included in the file. Blank lines are ignored, as are comments, which run from a ‘#’ character until the end of the line. Long option values can be split across multiple lines simply by indenting the continuation lines.

You can find out the list of options supported by a particular command with the universal —help option, e.g.

Note that an option spelled —foo-bar on the command-line is spelled foo_bar in configuration files.

For example, say you want your extensions to be built “in-place”—that is, you have an extension pkg.ext , and you want the compiled extension file ( ext.so on Unix, say) to be put in the same source directory as your pure Python modules pkg.mod1 and pkg.mod2 . You can always use the —inplace option on the command-line to ensure this:

But this requires that you always specify the build_ext command explicitly, and remember to provide —inplace . An easier way is to “set and forget” this option, by encoding it in setup.cfg , the configuration file for this distribution:

This will affect all builds of this module distribution, whether or not you explicitly specify build_ext. If you include setup.cfg in your source distribution, it will also affect end-user builds—which is probably a bad idea for this option, since always building extensions in-place would break installation of the module distribution. In certain peculiar cases, though, modules are built right in their installation directory, so this is conceivably a useful ability. (Distributing extensions that expect to be built in their installation directory is almost always a bad idea, though.)

Another example: certain commands take a lot of options that don’t change from run to run; for example, bdist_rpm needs to know everything required to generate a “spec” file for creating an RPM distribution. Some of this information comes from the setup script, and some is automatically generated by the Distutils (such as the list of files installed). But some of it has to be supplied as options to bdist_rpm, which would be very tedious to do on the command-line for every run. Hence, here is a snippet from the Distutils’ own setup.cfg :

Note that the doc_files option is simply a whitespace-separated string split across multiple lines for readability.

Читайте также:  Как восстановить загрузку windows после удаления linux

Syntax of config files in “Installing Python Modules”

More information on the configuration files is available in the manual for system administrators.

This ideal probably won’t be achieved until auto-configuration is fully supported by the Distutils.

ConfigParser в Python — как его использовать?

Файлы конфигурации используются как пользователями, так и программистами. Как правило, их используют для хранения настроек вашего приложения, или операционной системы. Библиотека в ядре Python включает в себя модуль, под названием configparser, который вы можете использовать для создания и работы с файлами конфигурации. Что ж, давайте выделим несколько минут на то, чтобы узнать, как это работает.

Совместимость с Python 3

Из за нововведений в стандарте PEP 8 модуль ConfigParser в Python 3 был переименован в configparser. Возможные ошибки:
ImportError: no module named ConfigParser

Решение проблемы совместимости

Создание файла

Создание файла config при помощи configparser невероятно просто. Давайте напишем небольшой код, чтобы посмотреть, как это работает:

Данный код создает файл config с одной секцией, под названием Settings, которая будет содержать наши опции: font, font_size, font_style и font_info. Обратите внимание на то, что в Python 3 нам нужно указать, что мы пишем файл в режиме write-only, или “w”. А в Python 2.7, мы использовали “wb” для написания в бинарном режиме.

Как читать, обновлять и удалять опции

Теперь мы готовы к тому, что бы научиться чтению файла config, обновлять его опции и даже удалять их. В нашем случае учиться будет намного проще, если мы попробуем на практике написать какой-нибудь код. Просто добавьте следующую функцию в код, который вы писали ранее.

Этот код сначала проверяет, существует ли файл config в принципе. Если его нет, то он использует созданную нами ранее функцию createConfig, чтобы создать файл. Далее мы создаем объект ConfigParser и указываем путь к файлу config для чтения. Чтобы прочесть опцию в вашем config файле, мы вызываем метод нашего объекта ConfigParser, указываем ему наименование секции и опции.

Есть вопросы по Python?

На нашем форуме вы можете задать любой вопрос и получить ответ от всего нашего сообщества!

Telegram Чат & Канал

Вступите в наш дружный чат по Python и начните общение с единомышленниками! Станьте частью большого сообщества!

Паблик VK

Одно из самых больших сообществ по Python в социальной сети ВК. Видео уроки и книги для вас!

Это вернет значение параметра. Если вы хотите изменить значение опции, вам нужно использовать метод set, в котором вы указываете название секции, опции, и новое значение. Наконец, мы можем использовать метод remove_option, чтобы удалить опцию. В нашем примере мы изменили значение font_size, и задали ему размер 12, затем мы удалили опцию font_style. После этого мы записали наши изменения на диск. Этот пример на на столько хорош, давайте упростим наш код. Для этого мы разделим наш код на на несколько функции:

Этот пример выглядит более организованно, по сравнению с первым. Я зашел так далеко, что назвал функции соответственно стандартам PEP8. Каждая функция должна объяснять сама себя и выполнять лишь одну задачу. Вместо того, чтобы помещать всю логику в одну единственную функцию, мы разделяем её на несколько функций, после чего демонстрируем их функционал в конце оператора if. Теперь вы можете импортировать модуль и использовать по назначению. Обратите внимание на то, что в этом примере есть сложная секция, так что вам, возможно, захочется усовершенствовать этот пример в дальнейшем, чтобы сделать его более универсальным.

Как использовать интерполяцию

Модуль configparser также подразумевает возможность интерполяции, что значит, что вы можете использовать существующие опции, для создания другой опции. Мы на самом деле это делали с опцией font_info, чьи параметры основаны на опциях font и font_size. Мы можем изменить интерполированное значение при помощи словаря Python. Давайте уделим несколько минут, и взглянем на оба случая.

Оцените статью