Найти - Пользователи
Полная версия: Передача параметров из файла конфигурации в программу
Начало » Python для новичков » Передача параметров из файла конфигурации в программу
1
drm
Здравствуйте.
Стоит следующая задача. Нужно в программу передавать значения параметров, хранящихся в отдельном текстовом файле (например маску файлов, которые следует закачать на сервер). Подскажите пожалуйста, как лучше всего организовать подобный конфигурационный файл и получать из него значения параметров. Спасибо.
Ed
Проще всего будет использовать стандартный модуль ConfigParser: http://docs.python.org/library/configparser.html
drm
А как передать адрес папки, в которой хранятся файлы конфигурации, в качестве ключа *.py файла? То есть нечто вроде myprog.py dir=/configdir
ZZZ
Самый низкоуровневый вариант, это sys.argv.
Чуть выше всякая чешуя вроде optparse.
Ed
drm
А как передать адрес папки, в которой хранятся файлы конфигурации
А что это файлов конфигурации вдруг много стало? Вроде поначалу был один?

Под какой OS все это происходит? Дело в том, что для *nix обычно есть предопределенные места, где программа ищет свой файл конфигурации. Для Windows конфигурационные параметры обычно в registry хранят, насколько я знаю.
drm
Разбираю конфиг с помощью ConfigParser. А можно ли в файле конфигурации (структура INI) указать несколько значений параметра, например dir: dir1,dir2 и затем парсером получить значения в виде списка или как-нибудь преобразовать строку в список? Если нет, то как это можно реализовать?
Ed
Туда можно писать все, что угодно, но читаться это будет как строки, либо как числа или boolean, если попросите.
В общем-то никто не мешает сконвертить это потом в список.

Предлагаю просто положить эти значения в разные секции. Тогда можете передавать название секции в качестве ключа программы и вынимать из нее все, что вам нужно. Это, кстати, поможет избавиться от множества конф. файлов, если я правильно понял вашу задачу. Просто будет много секций, в каждой свои параметры. также советую обратить внимание на секцию DEFAULT, в нее можно положить общие параметры, чтобы не дублировать их в каждой секции.
ZZZ
Ed
также советую обратить внимание на секцию DEFAULT, в нее можно положить общие параметры, чтобы не дублировать их в каждой секции.
Наследование секций? :-)))

Если конфиг большой, серьёзный и нужна возможность править руками, то посмотрите в сторону YAML (PyYAML).
drm
Спасибо за помощь. Задача решена, конфиг передается в виде ini-файла, при использовнаии нескольких значений параметров - производится конвертирование строки в список методом split().
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB