Hallo ich möchte gerne in einem Python-Programm viele Variablen als Dateien im Filesystem "spiegeln" bzw. ausgeben, ähnlich wie es Kernel-Treiber und -Module unter Linux machen. Einige Variablen sollen nur in Dateien ausgeben werden, andere sollen im Dateisystem überschrieben werden können und neuen Werte werden dann im Programm berücksichtigt. Gibt es da unter Python was komfortables a la WriteToFile(Variable), wo dann eine Datei mit gleichem Namen erzeugt wird und der Inhalt geschrieben bzw. ReadFromFile(Variable)? Kenne mich in Python noch nicht so gut aus und würde das sonst händisch mit open/write/read/usw. je Datei lösen.
Python-Anfänger schrieb: > ich möchte gerne in einem Python-Programm viele Variablen als Dateien im > Filesystem "spiegeln" bzw. ausgeben, ähnlich wie es Kernel-Treiber und > -Module unter Linux machen. Die erzeugen keine echten, sondern virtuelle Dateien. Wenn du auf die zugreifst, wird direkt eine entsprechende Funktion im Kernel-Treiber aufgerufen, der die Daten verarbeitet. Die landen nicht auf der Festplatte oder dem Dateisystem-Cache wie echte Dateien. > Einige Variablen sollen nur in Dateien ausgeben werden, andere sollen im > Dateisystem überschrieben werden können und neuen Werte werden dann im > Programm berücksichtigt. Dann müsste dein Programm diese Dateien kontinuierlich auf Änderungen überwachen.
Das Python-Programm ist eine kleine Steuerung/Regelung die ihre Eingangsdaten sowohl von Sensoren bekommt als auch von einem anderen Programm, dessen Daten in div. Laufzeit-Dateien übergeben werden (rein numerisch). Weiterhin möchte ich zur Laufzeit einige Regelparameter ändern können, die ebenfalls vom Programm in Dateien "gespiegelt" werden. Und last but not least möchte ich bestimmte Ergebnisse des Algorithmus ggf. in anderen Programmen/Skripten verwenden, daher die "Readonly"-Ausgabe. Ich dachte mir, am Anfang der Endlosschleife zusammen mit den Sensoren bestimme Variablen aus Dateien (Eingangsvariablen und Parameter) einzulesen und am Ende der Endlosschleife wo ich entsprechend Aktoren ansteuere, bestimme Variablen in Dateien schreibe. Quasi ein externes Dateninterface in Form von Variablen in Dateien. Die Variablen sind numerisch (integer, float), in den Dateien soll der Wert in Klartext stehen (z.B. 19.17 usw.). Pro Variable eine Datei. Pickle geht in die Richtung, aber dort kann ich das Dateiformat nicht festlegen?
Python-Anfänger schrieb: > Quasi ein externes Dateninterface in Form von Variablen in Dateien. Die > Variablen sind numerisch (integer, float), in den Dateien soll der Wert > in Klartext stehen (z.B. 19.17 usw.). Pro Variable eine Datei. > > Pickle geht in die Richtung, aber dort kann ich das Dateiformat nicht > festlegen? Also wenn du wirklich für jede Variable eine Datei mit dem Inhalt der Variable als Text haben möchtest, dann macht open+write/read doch genau das was du willst. Elegant ist das nicht, aber in diesem Fall vielleicht noch verschmerzbar. Wenn die Daten auch außerhalb von Python les- und schreibbar sein sollen, dann nimm JSON, ansonsten pickle. Wenn das ganze umfangreicher wird, würde ich sogar sqlite in Erwägung ziehen.
Dachte halt, es gäbe da im Python-Universum was fertiges. Gibts wenigstens eine Möglichkeit, den Variablennamen der übergebenen Variable zu ermitteln? Dann kann ich mir passende Wrapper-Funktionen bauen.
Spaminator schrieb: > Also wenn du wirklich für jede Variable eine Datei mit dem Inhalt der > Variable als Text haben möchtest, dann macht open+write/read doch genau > das was du willst. Elegant ist das nicht, aber in diesem Fall vielleicht > noch verschmerzbar. Wenn die Daten auch außerhalb von Python les- und > schreibbar sein sollen, dann nimm JSON, ansonsten pickle. Wenn das ganze > umfangreicher wird, würde ich sogar sqlite in Erwägung ziehen. Als IPC-Mechanismus? Ich würde da eher mal nach dbus, soap, xmlrpc oder so schauen. Die konzentrieren sich zwar nicht auf Variablen, sondern eher auf Funktionsuafrufe, aber damit kann man die Werte ja auch austauschen.
...belese dich mal zu dem Begriff "Named Pipes". Vielleicht kannst du damit das abbilden, was du benötigst.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.