Форум сайта python.su
Доброго времени суток форумчани.
Вопрос больше общепознавательный… мне просто стало интересно, как вы храните настройки ваших программ, если придусмотрено сохранение настроек в ваших приложениях для телефонов? Кто чем пользуется, может это ini файлы, или xml, или может pickler?
Офлайн
ini с возможностью считывания и преобразования в словарь и обратно
Офлайн
Пример:
def save(path,dict):
file=open(path,"wb")
for x in dict.items():
file.write(x[0]+"::"+repr(x[1])+"\n")
file.close()
def load(path):
file=open(path,"rb")
data=file.read()
file.close()
dict={}
for x in data.split("\n"):
if x.count("::"):
values=x.split("::")
dict[values[0]]=eval(values[1])
return dict
Отредактировано (Март 12, 2010 22:29:01)
Офлайн
По моему pickler в данном примере удобней будет
Офлайн
Лично я делаю достаточно просто, в том случает, если настроек не больше пары десяткой (больше просто не нужно было):
В программе завожу словарь с настройками, где ключи это названия настроек. Использовать в программе достаточно легко ( if not self.settings:return ). Сохраняю и читаю тупым repr и eval. Плюс еще в том, что ручками файл настроек достаточно легко редактировать.
Если настройки достаточно активно используются, можно и класс - обертку написать, для приведения к виду if not my_settings.enable:return
Офлайн
Я тоже когда-то хотел создать такую тему, но подумав, решил пойти своим путем, тогда и появился этот класс:
import os
class Settings:
def __init__(self):
try:
f = open(u'c:\\data\\MyApp\\options.ini', 'rb')
self.__dict__ = eval(f.read())
f.close()
except (IOError, SyntaxError), (code, descr):
os.path.exists(u'c:\\data\\MyApp') or os.makedirs(u'c:\\data\\MyApp')
# default settings
self.__dict__ = {
'name': u'Charles',
'second_name': u'Chaplin'
}
def __setattr__(self, key, value):
self.__dict__[key] = value
try:
f = open(u'c:\\data\\MyApp\\options.ini', 'wb')
f.write(repr(self.__dict__))
f.close()
except IOError, (code, descr):
pass
s = Settings()
print s.second_name
print s.name
s.second_name = u'John'
s.address = u'Some street'
Отредактировано (Март 15, 2010 17:51:23)
Офлайн