Уведомления

Группа в Telegram: @pythonsu

#1 Май 6, 2012 20:56:08

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Проблема импорта

:)

doza_and
А зачем в конфиге циклы?
Это была шутка. Конфиг по уму должен быть простеньким. Если там полно кода то это неудачное решение.
beelze
многострочные литералы c:+ все таки
Научите, я не умею.
import ConfigParser
cfg = ConfigParser.ConfigParser()
cfg.read("a.cfg")
print cfg.get("normal","a")
a.cfg
[normal]
a= a
               b
   c
b=5
результат:
>>>
a
b
c

Т.е. жрет начальные пробелы нещадно. Следовательно литералы коверкает.
Сам использую конфиги редко.
обычно так: есть модуль который импортируется например global_config.py в нем читается конфиг например global_config.cfg (и ищется он по пути относительному к global_config.py) после этого делаются все проверки. А в коде параметры конфигурации доступны в пространстве имен global_config. Так вроде и звездные врата прикрыты. И пляски с поиском пути к конфигу отсутствуют. И логика выдержана - одно чтение конфига при старте.



Офлайн

#2 Май 6, 2012 22:15:24

beelze
Зарегистрирован: 2012-04-11
Сообщения: 104
Репутация: +  3  -
Профиль   Отправить e-mail  

Проблема импорта

>Т.е. жрет начальные пробелы нещадно. Следовательно литералы коверкает.
да, но на практике мне попадалось не так много случаев где это важно. а где важно - тройные кавычки портят форматирование «документа», что тоже не радость.

>Так вроде и звездные врата прикрыты

ну вот я - юзер-малефик (у которого есть права писать в конфиг) и пишу следующее:

import sys
a = sys.exit(1)

что получается при импорте - понятно а ведь мог и rm -rf

>Если там полно кода то это неудачное решение
полагаю собственно коду в конфиге вообще не место, только определения там должны быть - в самом широком смысле

Отредактировано beelze (Май 6, 2012 22:18:14)

Офлайн

#3 Май 7, 2012 11:37:34

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Проблема импорта

beelze
юзер-малефик
>Юзеру доступны только конфиг файлы user.cfg (насколько это только возможно сделть в python :) ), потому возражение не принимается.
cfg.py- этот файл пользователю не доступен и нужен контроля путей поиска user.cfg и контроля однократности чтения и проверки конфигурации:
import ConfigParser, os
eCfg = ConfigParser.ConfigParser()
myrootdit=os.path.split(__file__)[0]
eCfg.read([os.path.join(myrootdit,"..",'globalconfdir','user.cfg')])
# checks checks..... eCfg correction.
aa="""a
   b
c
"""
print a
Ну да тут первая строка немного покороблена, но хоть сделать можно. А в конфиге помоему вообще нельзя.



Отредактировано doza_and (Май 7, 2012 11:40:16)

Офлайн

#4 Май 7, 2012 14:17:25

beelze
Зарегистрирован: 2012-04-11
Сообщения: 104
Репутация: +  3  -
Профиль   Отправить e-mail  

Проблема импорта

doza_and, так Вы оказывается ConfigParser и пользуете в итоге. Вроде как велась полемика ConfigParser/что-то еще vs import, не?

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version