2013-06-24 3 views
2

Я пытаюсь читать и писать cfg-файлы в python. Я пробовал пакет под названием configparser, но он жалуется на отсутствие заголовков, потому что, по-видимому, он не понимает формат моего файла. Я хотел бы узнать ваше мнение об этом, чтобы сделать это как можно проще. Примечание. Мне нужно придерживаться этого формата.чтение и запись файлов cfg в python

Вот формат моего файла:

PROFILE_PERIODS = 
( // note that this is not a curly brace 
     {  //comment 
       PRIORITY = 1; 
     }, 

     {  //comment 
       DESCRIPTION = "drgdfth"; 
     } 
) 
TIME_SYNCHRONIZATION = 
{ 
     INTERVAL = 100; 
} 

Этот конфигурационный файл также прочитан библиотека C называется libconfig. Thanks

+2

Вы посмотрели [это] (https://github.com/cnangel/python-libconfig)? – mgilson

+2

или, возможно, [это] (http://code.google.com/p/pylibconfig/) – mgilson

+0

У вас есть контроль над форматом файла конфигурации? Если это так, возможно, вам не придется изобретать еще-другой-конфигурационный файл-формат. В этом случае, так как ваш формат довольно близок к [JSON] (http://en.wikipedia.org/wiki/ JSON), с некоторыми незначительными корректировками вы можете использовать [соответствующую стандартную библиотеку Python] (http://docs.python.org/2/library/json.html) для ее анализа. –

ответ

1

Ваш файл выглядит так, как будто он имеет формат libconfig, который достаточно распространен в мире C/C++.

Я написал python-libconf, читатель/писатель файла libconfig с чистым Python. Интерфейс заимствован из стандартного библиотечного модуля json. Это довольно просто:

import libconf 
with io.open('file.cfg', encoding='utf-8') as f: 
    cfg = libconf.load(f) 

Он может быть легко установлен с помощью пип (pip install libconf) и хорошо работает в виртуальных средах. По сравнению с другими читателями libconfig Python он лицензируется как разрешенно (MIT), так и pure-Python (нет компиляции C-модулей).

+0

Я не пробовал, но спасибо за его реализацию. Кажется, это решение. – max

+0

Я могу читать с помощью libconf, но как писать в cfg-файле с помощью libconf? любой пример? –

+0

@SaurabhSengar: Вы можете использовать '' libconf.dump() '' и '' libconf.dumps() ''. Первая запись в файл-файл, вторая - строка. Интерфейс довольно похож на модуль '' json''. –

Смежные вопросы