2013-06-24 26 views
2

J'essaie de lire et d'écrire des fichiers cfg en python. J'ai essayé le paquet appelé configparser mais il se plaint d'en-têtes manquants car apparemment il ne comprend pas le format de mon fichier. Je voudrais connaître votre opinion à ce sujet pour accomplir ceci aussi facilement que possible. Note: Je dois m'en tenir à ce format.lire et écrire des fichiers cfg en python

Voici le format de mon fichier:

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

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

Ce fichier de configuration est également lu par une bibliothèque appelée c libconfig. Merci

+2

Avez-vous regardé [this] (https://github.com/cnangel/python-libconfig)? – mgilson

+2

ou peut-être [this] (http://code.google.com/p/pylibconfig/) – mgilson

+0

Avez-vous le contrôle sur le format de fichier de configuration? Si oui, vous n'avez peut-être pas encore besoin d'inventer-un-autre-format-de-fichier-de-configuration ™ Dans ce cas, puisque votre format est assez proche de [JSON] (http://en.wikipedia.org/wiki/ JSON), avec quelques ajustements mineurs, vous pouvez utiliser la [bibliothèque Python standard correspondante] (http://docs.python.org/2/library/json.html) pour l'analyser. –

Répondre

1

Votre fichier semble avoir le format libconfig, ce qui est assez commun dans le monde C/C++.

J'ai écrit python-libconf, un lecteur/graveur de fichiers pconon libconfig pur. L'interface est empruntée au module de bibliothèque standard json. Il est assez simple:

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

Il peut être installé facilement par l'intermédiaire pip (pip install libconf) et fonctionne bien dans des environnements virtuels. Comparé aux autres lecteurs libconfig Python, il est à la fois permissivement sous licence (MIT) et pure-Python (pas de modules C à compiler).

+0

Je ne l'ai pas essayé, mais merci pour la mise en œuvre. Semble être la solution. – max

+0

Je suis capable de lire en utilisant libconf, mais comment écrire dans un fichier cfg en utilisant libconf? un exemple? –

+0

@SaurabhSengar: Vous pouvez utiliser '' libconf.dump() '' et '' libconf.dumps() ''. Le premier écrit dans un objet fichier, le second produit une chaîne. L'interface est assez analogue au module '' json''. –

Questions connexes