Zwei Variablen in Datei schreiben und lesen

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Ich habe ähnliche Threads hierzu zwar gefunden, komme aber nicht so ganz mit der angebotenen Lösung zurecht, daher mein separater Thread:

    Ich brauche für ein Skript den Status von zwei Variablen, der auch nach einem Reboot noch vorhanden sein soll. Das "Einfachste" scheint mit daher das Schreiben in eine Datei.

    Sagen wir, die Variablen heißen check1 und check2. Beide können einen Wert von entweden 0 oder 1 haben. Mehrmals am Tag wird der Status geändert und soll dann immer sofort in die Datei geschrieben werden.

    Nach jedem Neustart eines Skriptes sollen die Variablen wieder ausgelesen werden.

    Beim Suchen bin ich auf cPickle gestoßen aber so richtig ist mir die Funktionsweise noch nicht klar. Oder ist das Overkill, gibt es eine viel einfachere Lösung?

  • Also, jetzt brauche ich nochmal kurz Eure Hilfe.

    Pickle ist ja in der Tat relativ einfach.

    Ich schreibe jetzt drei Variable in eine Liste.

    Wenn ich das jetzt wieder auslese, bekomme ich mit

    Code
    frame_persistence = pickle.load( open( "save.frame_state", "rb" ) )

    angezeigt:

    Code
    {'W': '1', 'Manual': '1', 'T': '0'}


    Wobei mir nicht ganz klar ist, warum die Reihefolge eine andere ist, aber ok.

    Jetzt meine Frage (die wahrscheinlich vollkommen banal ist): Wie lese ich aus dieser Liste die Werte für meine Variablen w_presence, t_presence und manual_override wieder ein?

    Habe das jetzt mit der iter Funktion lösen können.

    Code
    i = iter(frame_persistence)
    w_presence = i.next()
    t_presence = i.next()
    manual_override = i.next()
  • Du speicherst ein Dictionary und da ist die Reihenfolge, in der die Daten intern bzw extern abgelegt werden nicht definiert. Das ist aber auch kein Problem, denn Du greifst auf die Elemente ja immer über den Key zu. D.h. in Deinem Falle

    Code
    w_presence = frame_persistence["W"]
    ... usw...

    Mit dem Iter würde ich nicht arbeiten, denn bei dem Iterator hast Du keine definierte Reihenfolge - nur dass eben alle Elemente einmal geliefert werden. Auch sonst ist ein Iterator hier overkill. Ein einfacher Zugriff auf das Dictionary reicht hier vollkommen.
    Lies auch mal hier nach. Da gibt es auch noch viele andere Dinge zu Python die gut erklärt sind ;)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!