Forum: PC-Programmierung Python: Variableninhalte in Dateien schreiben/lesen


von Python-Anfänger (Gast)


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

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.

von Spaminator (Gast)


Lesenswert?


von Python-Anfänger (Gast)


Lesenswert?

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?

von Spaminator (Gast)


Lesenswert?

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.

von Python-Anfänger (Gast)


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

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.

von guru (Gast)


Lesenswert?

...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
Noch kein Account? Hier anmelden.