Python: Variableninhalte in Dateien schreiben/lesen

Gast #4762676
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.
Gast
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.
Gast
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?
Gast
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.
Gast
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.
Gast
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.