Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 22, 2021 09:54:13

xintrea
Зарегистрирован: 2013-10-29
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Как в Python 2.7.13 изменить INI-файл с субсекциями?

Имеется INI-файл с вот такой структурой:

...
[AC]
icon=battery-charging

[AC][DPMSControl]
idleTime=3600

[AC][HandleButtonEvents]
lidAction=64
powerButtonAction=8

[Battery]
icon=battery-060

[Battery][DPMSControl]
idleTime=300

[Battery][HandleButtonEvents]
lidAction=64
powerButtonAction=16

[LowBattery]
icon=battery-low

[LowBattery][BrightnessControl]
value=30

[LowBattery][HandleButtonEvents]
lidAction=64
powerButtonAction=16
...
Здесь видно, что HandleButtonEvents - это “субсекция”, а основная секция задается перед субсекцией в той же строке. Не знаю, является ли это стандартом для INI-файлов или нет, не я этот файл создавал.

Задача - поменять значения powerButtonAction в различных субсекциях.

Пробовал достучаться до нужного значения так (хотя бы считать):
import ConfigParser
config=ConfigParser.ConfigParser()
config.read('$fileName')

print( config.get('AC][HandleButtonEvents', 'powerButtonAction' ) )
Но возникает ошибка:
      "Traceback (most recent call last):",
" File \"<stdin>\", line 5, in <module>",
" File \"/usr/lib/python2.7/ConfigParser.py\", line 607, in get",
" raise NoSectionError(section)",
"ConfigParser.NoSectionError: No section: 'AC][HandleButtonEvents'"
Вопрос: как работать с такими файлами?

UPD: При необходимости могу поставить Python 3.5.3, если это будет нужно для решения.

Отредактировано xintrea (Янв. 22, 2021 11:27:34)

Офлайн

#2 Янв. 22, 2021 10:13:37

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Как в Python 2.7.13 изменить INI-файл с субсекциями?

Не факт что именно такой конфиг конфигпарсер скушает. Вроде по документации он поддерживает только один уровень секций.
QSettings и configobj поддерживают несколько уровней, но там субсекции по другому определяются. Причем каждый по разному.

Возможно вам придеться писать свой конфигпарсеп с шариатом и гуриями для парсинга вот такого конфига.



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Янв. 22, 2021 10:27:06)

Офлайн

#3 Янв. 22, 2021 10:19:47

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

Как в Python 2.7.13 изменить INI-файл с субсекциями?

xintrea
Здесь видно, что HandleButtonEvents - это “субсекция”, а основная секция задается перед субсекцией в той же строке. Не знаю, является ли это стандартом для INI-файлов или нет, не я этот файл создавал.
В INI-формате такого понятия нет. Если делаешь подсекции, то они являются секциями.

Ты пытаешься модулем для разбора INI-файлов разобрать то, что INI-файлом не является.

Парсер можно построить так:
1. Сначала ты данные эти приводишь к виду INI-файла
[AC][DPMSControl] -> [AC@@@DPMSControl]
2. Потом ты разбираешь этот INI-файл получившийся и меняешь его.
3. И потом ты восстанавливаешь INI-файл обратно в этот формат
[AC@@@DPMSControl] -> [AC][DPMSControl]



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version