Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 25, 2008 19:51:07

drm
От:
Зарегистрирован: 2008-12-25
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача параметров из файла конфигурации в программу

Здравствуйте.
Стоит следующая задача. Нужно в программу передавать значения параметров, хранящихся в отдельном текстовом файле (например маску файлов, которые следует закачать на сервер). Подскажите пожалуйста, как лучше всего организовать подобный конфигурационный файл и получать из него значения параметров. Спасибо.



Офлайн

#2 Дек. 25, 2008 20:28:50

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Передача параметров из файла конфигурации в программу

Проще всего будет использовать стандартный модуль ConfigParser: http://docs.python.org/library/configparser.html



Офлайн

#3 Дек. 25, 2008 21:51:03

drm
От:
Зарегистрирован: 2008-12-25
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача параметров из файла конфигурации в программу

А как передать адрес папки, в которой хранятся файлы конфигурации, в качестве ключа *.py файла? То есть нечто вроде myprog.py dir=/configdir



Отредактировано (Дек. 25, 2008 22:18:39)

Офлайн

#4 Дек. 25, 2008 22:36:28

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Передача параметров из файла конфигурации в программу

Самый низкоуровневый вариант, это sys.argv.
Чуть выше всякая чешуя вроде optparse.



Офлайн

#5 Дек. 25, 2008 23:09:10

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Передача параметров из файла конфигурации в программу

drm
А как передать адрес папки, в которой хранятся файлы конфигурации
А что это файлов конфигурации вдруг много стало? Вроде поначалу был один?

Под какой OS все это происходит? Дело в том, что для *nix обычно есть предопределенные места, где программа ищет свой файл конфигурации. Для Windows конфигурационные параметры обычно в registry хранят, насколько я знаю.



Офлайн

#6 Дек. 26, 2008 03:18:37

drm
От:
Зарегистрирован: 2008-12-25
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача параметров из файла конфигурации в программу

Разбираю конфиг с помощью ConfigParser. А можно ли в файле конфигурации (структура INI) указать несколько значений параметра, например dir: dir1,dir2 и затем парсером получить значения в виде списка или как-нибудь преобразовать строку в список? Если нет, то как это можно реализовать?



Отредактировано (Дек. 29, 2008 10:54:11)

Офлайн

#7 Дек. 26, 2008 10:38:47

Ed
От:
Зарегистрирован: 2008-12-13
Сообщения: 1032
Репутация: +  13  -
Профиль   Отправить e-mail  

Передача параметров из файла конфигурации в программу

Туда можно писать все, что угодно, но читаться это будет как строки, либо как числа или boolean, если попросите.
В общем-то никто не мешает сконвертить это потом в список.

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



Офлайн

#8 Дек. 27, 2008 03:10:12

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Передача параметров из файла конфигурации в программу

Ed
также советую обратить внимание на секцию DEFAULT, в нее можно положить общие параметры, чтобы не дублировать их в каждой секции.
Наследование секций? :-)))

Если конфиг большой, серьёзный и нужна возможность править руками, то посмотрите в сторону YAML (PyYAML).



Офлайн

#9 Дек. 29, 2008 10:49:36

drm
От:
Зарегистрирован: 2008-12-25
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Передача параметров из файла конфигурации в программу

Спасибо за помощь. Задача решена, конфиг передается в виде ini-файла, при использовнаии нескольких значений параметров - производится конвертирование строки в список методом split().



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version