Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 23, 2014 18:42:13

mitya_s_v
Зарегистрирован: 2014-09-10
Сообщения: 64
Репутация: +  4  -
Профиль   Отправить e-mail  

ConfigParser

Сейчас вот таким макаром записываю изменения в файл с настройками, но есть одни досадный момент, при таком подходе из файла удаляются все комментарии, которые находятся над секцией с параметрами.
Можно это поправить?

config= configparser.configparser.ConfigParser()()
config.read('./data.conf')
config.set('Video','Path',r'C:\itb\itb')
with open('./data.conf', 'w') as configfile:
    config.write(configfile)

Офлайн

#2 Дек. 26, 2014 13:22:41

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2762
Репутация: +  185  -
Профиль   Отправить e-mail  

ConfigParser

http://python.su/forum/post/61220/



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Дек. 29, 2014 09:34:35

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

ConfigParser

mitya_s_v
Можно это поправить?
Конечно.
1 Проектируйте систему в которой файлы которые правятся человеком из текстового редактора - правятся только человеком из текстового редактора. Если пишутся программно - то пишутся программно в другие файлы. Если необходимо можно предусмотреть возможность посмотреть содержимое программно записанных файлов в текстовом редакторе.

Сегодня комментарии захотели сохранить завтра отступы, послезавтра порядок ключей будет важен и т.п.
Удовлетворить все хотелки очень трудно.

2 Комментарии практически не нужны если правильно выбраны названия ключей.
3 Некоторые люди в качестве комментария используют дополнительные поля. Это актуально например в json.

4 configParser сильно ограничивает возможности сохранения и восстановления конфигурации. Думаю что формат ini файлов устаревший и плохо стандартизированный. Посмотрите в сторону json yaml. Интересный пример конфигурирования с использованием json это редактор sublime text. Почему вам так не сделать?

5 Некоторые наиболее смелые люди используют в качестве конфигурационных файлов питоновские модули. Простота использования просто сказочная. Импортируете модуль и все! А персистентные данные можно и в sqlite хранить.



Отредактировано doza_and (Дек. 29, 2014 09:38:30)

Офлайн

#4 Дек. 29, 2014 10:14:47

mitya_s_v
Зарегистрирован: 2014-09-10
Сообщения: 64
Репутация: +  4  -
Профиль   Отправить e-mail  

ConfigParser

Rodegast

config = ConfigParser()
# Читаем файл
config.readfp(open(path2settings, "r"))
def Citaem():
	# Читаем dbname из секции DataBase
	print config.get("DataBase", "dbname")
def Pisim():
	# Пишим в секцию DataBase
	config.set("DataBase", "dbname", "baza")
	# Записываем файл
	config.write(open(path2settings, "w"))
Так я так и делаю
def write(self, for_record):
        for key, value in for_record.items():
            self.parser.set(self.section, key, value)
        with open(self.path, 'w') as out:
            self.parser.write(out)

Отредактировано mitya_s_v (Дек. 29, 2014 10:15:07)

Офлайн

#5 Дек. 29, 2014 10:18:14

mitya_s_v
Зарегистрирован: 2014-09-10
Сообщения: 64
Репутация: +  4  -
Профиль   Отправить e-mail  

ConfigParser

doza_and
Некоторые люди в качестве комментария используют дополнительные поля. Это актуально например в json.
Интересный вариант, но conf файлы больше нравятся тем, что они поголовно используются в linux + их в ручную легко редактировать (легко читаются).

Офлайн

#6 Дек. 29, 2014 11:21:49

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9894
Репутация: +  854  -
Профиль   Отправить e-mail  

ConfigParser

Надо без комментариев работать с файлом, если он может программно писаться.

doza_and
3 Некоторые люди в качестве комментария используют дополнительные поля.
Не очень уматно. Где гарантия, что другой человек поймёт, что это не какое-то важное поле?

mitya_s_v
но conf файлы больше нравятся тем, что они поголовно используются в linux
Ну, и как в linux обстоит дело с комментариями? Обычная перезапись.



Отредактировано py.user.next (Дек. 29, 2014 11:22:42)

Офлайн

#7 Дек. 29, 2014 12:54:34

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

ConfigParser

mitya_s_v
но conf файлы больше нравятся тем, что они поголовно используются в linux + их
Не могу согласиться. Вот почему:
да в Unix полно конфигурационных файлов. Но это большей частью шелы и изредка conf.

Смотрим документацию:
The ConfigParser class implements a basic configuration file parser language which provides a structure similar to what you would find on Microsoft Windows INI files.
Т.е. ConfigParser читает ini файлы :( к конфам он не имеет никакого отношения. Может в частных случаях он их и прочитает но это на ваш страх и риск.
смотрим в вики:
“ini-файл (англ. Initialization file) — это файл конфигурации, который содержит данные настроек для Microsoft Windows, Windows NT и некоторых приложений.”
“Не существует подробной официальной спецификации формата”
Поэтому трудно ожидать от пользователей интуитивного понятия формата (как писать комментарии например).
Собственно поэтому аргумент про linux мне кажется странным. Там то как раз ini файлы вообще не используются.
На мой взгляд наиболее легкий для чтения и редактирования людьми формат это yaml (конечно в нем есть некоторые идеи взятые из python, но может это плюс?).



Отредактировано doza_and (Дек. 29, 2014 12:57:01)

Офлайн

#8 Дек. 29, 2014 16:08:17

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9894
Репутация: +  854  -
Профиль   Отправить e-mail  

ConfigParser

doza_and
Там то как раз ini файлы вообще не используются.
Не, настройки kde хранятся в виде
секция
список параметров
...
Смотри файлы вида *rc.

doza_and
да в Unix полно конфигурационных файлов. Но это большей частью шелы и изредка conf.
Это не только шеллы, есть также и конфигурационные файлы программ типа apache, wget или sudo. В них распознаются только комментарии, похожие на шелловские, но на этом сходства заканчиваются, так как там часто вообще своя семантика.



Отредактировано py.user.next (Дек. 29, 2014 16:13:17)

Офлайн

#9 Дек. 29, 2014 16:09:48

mitya_s_v
Зарегистрирован: 2014-09-10
Сообщения: 64
Репутация: +  4  -
Профиль   Отправить e-mail  

ConfigParser

py.user.next
Смотри файлы вида *rc.
Во во и я о том

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version