Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конфиг без секций 
:(
    Опции темы
Karadul
Дата 19.5.2012, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Можно так сделать? 
PM MAIL   Вверх
bilbobagginz
Дата 20.5.2012, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 6
Всего: 317



xml/yaml/JSON




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Karadul
Дата 20.5.2012, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Надо обычный конфиг файл, как system.ini в винде, но без секций. xml сложнее, а json нечитаем.
PM MAIL   Вверх
rsm
Дата 21.5.2012, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Чтение плоского (без иерархии) конфига пишется в две строчки:

Код

"""
принимает аргументом путь к файлу, выдаёт словарь
комментарии (строки, начинающиеся с символа '#') игнорируются
"""
def read_options_from_file(file_path):
    return dict(map(lambda value: value.strip(), line.split('=', 1)) \
        for line in open(file_path, "r") if '=' in line and not line.startswith('#'))

print(read_options_from_file("nya.conf"))

Пример конфига:

Код

# это комментарий
bar=foo
foo = bar = 100500

На выходе получаем удобный словарь:

Код

{'foo': 'bar = 100500', 'bar': 'foo'}

Недостаток - если в конфиге есть одинаковые ключи, в итоговый словарь попадёт только последнее значение ключа.

Это сообщение отредактировал(а) rsm - 22.5.2012, 17:54
PM MAIL   Вверх
Karadul
Дата 21.5.2012, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Цитата

foo = bar = 100500

Похоже на нарушение формата?
А почему дефолтовый модуль хочет секции? Где-то написано, что они обязательно должны быть?
PM MAIL   Вверх
rsm
Дата 22.5.2012, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(Karadul @  21.5.2012,  17:20 Найти цитируемый пост)
Похоже на нарушение формата?

Нарушение, которое нормально обрабатывается.

Цитата(Karadul @  21.5.2012,  17:20 Найти цитируемый пост)
Где-то написано, что они обязательно должны быть?

В официальной документации.
PM MAIL   Вверх
Karadul
Дата 22.5.2012, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Я имею в виду общую, не связанную с языками документацию на ини файл.

Цитата(rsm @  22.5.2012,  02:36 Найти цитируемый пост)
Нарушение, которое нормально обрабатывается.

Тьху, все нормально. Мне показалось, что foo и bar будет 100500.

Это сообщение отредактировал(а) Karadul - 22.5.2012, 14:09
PM MAIL   Вверх
rsm
Дата 22.5.2012, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 999
Регистрация: 16.3.2005

Репутация: нет
Всего: 62



Цитата(Karadul @  22.5.2012,  15:53 Найти цитируемый пост)
общую, не связанную с языками документацию на ини файл

Её, походу, никогда и не было. Лепят кому как вздумается smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.