Seite 1 von 1

ConfigParser ohne [Section]

Verfasst: Mittwoch 26. September 2007, 09:35
von Zack
Hi,
gibt es eine Möglichkeit den ConfigParser ohne [Section's] arbeiten zu lassen. Ich habe hier eine Config-File (doxygen-conf) die ich gerne so einfach bearbeiten würde, wie ich es vom ConfigParser gewohnt bin. Diese besitzt leider keine [Section] sondern nur "Option = Parameter" und lässt sich daher von mir nicht einlesen.

Bin über jede Hilfe oder andere Lösungs-Vorschläge dankbar.
Gruß Zack

Verfasst: Mittwoch 26. September 2007, 09:57
von lunar
Nimm ConfigObj. Das hat auch eine angenehmere API und ist mächtiger.

Code: Alles auswählen

from configobj import ConfigObj
# repräsentiert die Zeilen einer Konfigurationsdatei (wie bei file.readlines)
lines = ['foo = bar\n',
         'test = 1\n']
config = ConfigObj(lines)
print config['foo'] # gibt bar aus
print config['test'] # gibt 1 aus

Verfasst: Mittwoch 26. September 2007, 12:16
von Zack
Hey lunar,
coole Sache, genau das was ich suche. Aber leider hab ich damit ein paar Probleme. In der Doku heißt es:

Code: Alles auswählen

from configobj import ConfigObj
config = ConfigObj(filename)
#
value1 = config['keyword1']
Leider ist da der Wurm drin, denn bei dem Aufruf schmiert's mir sofort ab

Folgendes habe ich versucht:

Code: Alles auswählen

from configobj import ConfigObj
config = ConfigObj("testfile")
Error:

Code: Alles auswählen

Traceback (most recent call last):
  File "<string>", line 192, in run_nodebug
  File "C:\wrun2\doxygen\2.py", line 3, in <module>
    config = ConfigObj("Doxyfile")
  File "C:\wrun2\doxygen\configobj.py", line 1252, in __init__
    raise error
configobj.ConfigObjError: Parsing failed with several errors.
First error at line 14.
Die testfile ist vorhanden und im selben Ordner. Auch mit abspath keine Chance.
Ich kann mir leider nicht erklären woran das liegt.
Gruß Zack

Verfasst: Mittwoch 26. September 2007, 12:33
von lunar
Der Traceback passt nicht zum Beispielcode. Der Beispielcode lädt "testfile", der Traceback deutet aber auf "Doxyfile" hin.

Ich halte mich mal an den Traceback, der sagt, dass die Konfigurationsdatei kein gültiges Format besitzt. Der erste Fehler wurde in Z 14 der Konfigurationsdatei gefunden. Allerdings steht das alles deutlich im Traceback... :roll:

Doxyfile ist offenbar keine gültige INI-Datei.

Näheres kann ich ohne die Konfigurationsdatei nicht sagen.

Nächstes mal solltest du übrigens tunlichst darauf achten, dass der gepostete Beispielcode auch zum Traceback passt.

Verfasst: Mittwoch 26. September 2007, 12:44
von Zack
Doxyfile war meine testfile. Hier mal ein Ausschnitt:

Code: Alles auswählen

# Doxyfile 1.5.3

#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
DOXYFILE_ENCODING      = UTF-8
PROJECT_NAME           = XXXPROJECT_NAMEXXX
PROJECT_NUMBER         = XXXPROJECT_NUMBERXXX
OUTPUT_DIRECTORY       = XXXOUTPUT_DIRECTORYXXX
CREATE_SUBDIRS         = NO
OUTPUT_LANGUAGE        = XXXOUTPUT_LANGUAGEXXX
BRIEF_MEMBER_DESC      = YES
REPEAT_BRIEF           = YES
ABBREVIATE_BRIEF       = "The $name class " \
                         "The $name widget " \
                         "The $name file " \
                         is \
                         provides \
                         specifies \
                         contains \
                         represents \
                         a \
                         an \
                         the
ALWAYS_DETAILED_SEC    = NO

Verfasst: Mittwoch 26. September 2007, 12:49
von lunar
Das kann ConfigObj nicht lesen. Der Umbruch in Zeile 14 ff ist aus Sicht von ConfigObj ungültig. ConfigObj bricht anders um, nämlich ohne \ und mit anderer Einrückung.

Verfasst: Mittwoch 26. September 2007, 12:56
von Zack
Dann wird's wohl darauf hinauslaufen, dass ich mir nen eigenen Parser basteln muss :-(
Schade, aber trotzdem vielen Dank für die Hilfe. Werde ConfigObj sicher nochmal verwenden.
Gruß Zack