drm
Дек. 25, 2008 19:51:07
Здравствуйте.
Стоит следующая задача. Нужно в программу передавать значения параметров, хранящихся в отдельном текстовом файле (например маску файлов, которые следует закачать на сервер). Подскажите пожалуйста, как лучше всего организовать подобный конфигурационный файл и получать из него значения параметров. Спасибо.
Ed
Дек. 25, 2008 20:28:50
Проще всего будет использовать стандартный модуль ConfigParser:
http://docs.python.org/library/configparser.html
drm
Дек. 25, 2008 21:51:03
А как передать адрес папки, в которой хранятся файлы конфигурации, в качестве ключа *.py файла? То есть нечто вроде myprog.py dir=/configdir
ZZZ
Дек. 25, 2008 22:36:28
Самый низкоуровневый вариант, это sys.argv.
Чуть выше всякая чешуя вроде optparse.
Ed
Дек. 25, 2008 23:09:10
drm
А как передать адрес папки, в которой хранятся файлы конфигурации
А что это файлов конфигурации вдруг много стало? Вроде поначалу был один?
Под какой OS все это происходит? Дело в том, что для *nix обычно есть предопределенные места, где программа ищет свой файл конфигурации. Для Windows конфигурационные параметры обычно в registry хранят, насколько я знаю.
drm
Дек. 26, 2008 03:18:37
Разбираю конфиг с помощью ConfigParser. А можно ли в файле конфигурации (структура INI) указать несколько значений параметра, например dir: dir1,dir2 и затем парсером получить значения в виде списка или как-нибудь преобразовать строку в список? Если нет, то как это можно реализовать?
Ed
Дек. 26, 2008 10:38:47
Туда можно писать все, что угодно, но читаться это будет как строки, либо как числа или boolean, если попросите.
В общем-то никто не мешает сконвертить это потом в список.
Предлагаю просто положить эти значения в разные секции. Тогда можете передавать название секции в качестве ключа программы и вынимать из нее все, что вам нужно. Это, кстати, поможет избавиться от множества конф. файлов, если я правильно понял вашу задачу. Просто будет много секций, в каждой свои параметры. также советую обратить внимание на секцию DEFAULT, в нее можно положить общие параметры, чтобы не дублировать их в каждой секции.
ZZZ
Дек. 27, 2008 03:10:12
Ed
также советую обратить внимание на секцию DEFAULT, в нее можно положить общие параметры, чтобы не дублировать их в каждой секции.
Наследование секций? :-)))
Если конфиг большой, серьёзный и нужна возможность править руками, то посмотрите в сторону YAML (PyYAML).
drm
Дек. 29, 2008 10:49:36
Спасибо за помощь. Задача решена, конфиг передается в виде ini-файла, при использовнаии нескольких значений параметров - производится конвертирование строки в список методом split().