Python Funktion menschenlesbar in XML lesen und speichern?

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
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

Hi,

folgendes Problem.
Ich möchte in einer XML Datei Python Funktionen speichern, sie später auslesen und dann verwenden um Daten auszuwerten.
Hab schon ein bisschen über eval und exec gelesen aber bin mir noch nicht ganz sicher ob ich es ganz verstehe. Erstmal was ich machen will:

Code: Alles auswählen

#xml lesen 
str_function = xml bla
#habe hier dann den Text der in dem für die Funktion vorgesenenden XML Teil steht
function = eval(str_function)
result = function(data)
Problem was ich sehe ist:
1. Wie bekomme ich das mit dem Einrücken hin?
Oder geht das von alleine?
2. Der User muss wissen das er da nicht die Funktion ins XML schreibt die er Ausgeführt haben will sondern eine Funktion die mir die Funktion die er verwenden will zurück gibt?

Irgendwie etwas verwirrend bisher und ich denke fast, es gibt da eine Elegantere Methode.
Also die Frage an euch ^^

Noch schnell warum ich das überhaupt mache:
Ich schreibe ein kleines Analyse Programm. Damit immer klar verfolgt werden kann wie das Ergebnis entstand, die User aber selber sagen können auf was sie genau gucken wollen versuche ich ein Filter Modell einzubauen. Das Programm wird also vom User nicht verändert sondern er schreibt sich nur seinen Filter für seine Analyse. Somit kann jeder wenn er den Filter hat sich sicher sein das das selbe raus kommt und das der ganze Rest (also auslesen, plotten etc) immer Funktioniert.
BlackJack

@p90: Also ich würde keinen Quelltext in XML-Dateien einbetten, bei dem es auf Einrückung ankommt. Das ist IMHO zu fragil.

Kann der Benutzer nicht ganz normale Python-Module schreiben, die Du dann importierst und die bestimmte Kriterien erfüllen müssen, damit Du die passenden Filterfunktionen darin findest?
p90
User
Beiträge: 198
Registriert: Donnerstag 22. Juli 2010, 17:30

Hi,

eigentlich wollte ich genau das vermeiden.
Aber ich finde auch keine schöne Möglichkeit dies zu Lösen.
Antworten