cpp Dateien auslesen und Variablen mit python nutzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
blub
User
Beiträge: 1
Registriert: Donnerstag 2. April 2009, 08:35

Hallo!
Wir haben hier ein größeres C++ Programm, welches eine Konfigurationsdatei besitzt in ./src/parameters.cpp. Diese wird vor jedem Programmstart modifiziert.
Dort steht unter anderem drin:

const char Run_Name[RUN_NAME_SIZE] = "RUN-XYZ";

Für mein Programm, ein Python Programm, würde ich nun gerne diese Datei auslesen und das RUN-XYZ finden. Bis jetzt muss ich immer das extra RUN-XYZ angeben muss, was einwenig umständlich ist.

Gibt es eine Möglichkeit mit Python diese Datei auszulesen und das Python den String RUN-XYZ weiter benutzen kann?

Vielen Dank für Tips
blub
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Hoi und willkommen im Forum,

C++ kannst Du mit pygccxml parsen, sofern Du gcc benutzen kannst. gcc mußt Du nicht zum kompilieren verwenden, aber der Parser verlangt nach gcc - es besteht also eine Abhängigkeit.

Ggf, kannst Du auch swig nehmen: Das erstellt u. a. einen Python-Wrapper für Dein cpp-File (siehe swig-Docs) und dieses File kannst Du in Python einlesen - und natürlich auch auf sämtliche dort globalen Parameter zugreifen.

HTH
Christian
Benutzeravatar
helduel
User
Beiträge: 300
Registriert: Montag 23. Juli 2007, 14:05
Wohnort: Laupheim

Moin,

oder du parst die Datei einfach mit einer Regex (ungetestet):

Code: Alles auswählen

import re
run_name = re.search('const char Run_Name\[RUN_NAME_SIZE] = "(.*?)";')
with open("parameters.cpp") as cfg:
    result = run_name.search(cfg.read())
    name = result.group(1)
Ich gehe davon aus, dass die Datei nicht allzu groß ist. Ansonsten kannst du über die einzelnen Zeilen iterieren und die Regex so lange auf jede Zeile anwenden, bis du fündig geworden bist.

Gruß,
Manuel
Panke
User
Beiträge: 185
Registriert: Sonntag 18. März 2007, 19:26

Regulärer Ausdruck?
Antworten