Ist so etwas wie ConfigParser geeignet für Sparzustand (Schlüssel, Wert) zwischen den Läufen?

StackOverflow https://stackoverflow.com/questions/916779

  •  06-09-2019
  •  | 
  •  

Frage

Ich möchte eine Reihe von Schlüsselwertepaare (string, int) zwischen den Läufen eines Python-Programm speichern, laden sie auf den folgenden Durchläufen und die Änderungen schreiben auf den nächsten Lauf zur Verfügung stehen.

Ich glaube nicht, diese Daten als Konfigurationsdatei, aber es würde die ConfigParser Fähigkeiten ganz gut passen. Ich würde nur zwei [Abschnitte]. Es ist nur ein paar hundert Paare und sehr einfach, damit ich nicht denke, es ist notwendig, eine tatsächliche Datenbank zu tun.

Ist es angemessen, ConfigParser auf diese Weise zu benutzen? Ich habe auch mit Perl und XML angesehen :: Simple. Was ist das? Gibt es eine Möglichkeit, dies in bash zu tun, ohne Python oder Perl?

War es hilfreich?

Lösung

Nun, haben Sie bessere Möglichkeiten. Sie können zum Beispiel verwenden Gurke oder json Format. Pickle Serialisierung Modul ist sehr einfach zu bedienen.

import cPickle
cPickle.dump(obj, open('save.p', 'wb')) 
obj = cPickle.load(open('save.p', 'rb'))

Das Format ist nicht für Menschen lesbaren und Unpickling ist nicht sicher gegen fehlerhafte oder bösartig konstruierte Daten. Sie sollten nicht nicht vertrauenswürdige Daten unpickle.

Wenn Sie Python verwenden 2.6 gibt es eine eingebaute Modul namens json . Es ist so einfach wie Gurke zu verwenden:

import json
encoded = json.dumps(obj)
obj = json.loads(encoded)

Json-Format ist für Menschen lesbare und ist sehr ähnlich die Wörterbuch String-Darstellung in Python. Und hat keine Sicherheitsprobleme wie Gurke.

Wenn Sie eine frühere Version von Python verwenden Sie können simplejson statt.

Andere Tipps

Für mich PyYAML gut für diese Art von Dingen arbeitet. Ich benutzte Beize oder ConfigParser zu verwenden, bevor.

ConfigParser ist eine feine Art und Weise tun. Es gibt andere Möglichkeiten (die json und cPickle Module bereits nützlich erwähnt werden), die auch gut sind, je nachdem, ob Sie Textdateien oder binäre Dateien haben, und wenn Sie Code wollen einfach in älteren Versionen von Python arbeiten oder nicht.

Sie mögen eine dünne Abstraktionsschicht oben auf dem gewählten Weg haben, um es zu Ihrem Verstand zu erleichtern zu ändern.

Klingt wie ein Job für eine dbm . Im Grunde genommen ist es ein Hash, der zu Ihrem Programm externe lebt. Es gibt viele Implementierungen. In Perl ist es trivial zu eine dbm auf einen Hash binden (dh es wie ein dbm aussehen ist wirklich ein normales Hash-Variable). Ich weiß nicht, ob es einen gleichwertigen Mechanismus in Python, aber ich wäre überrascht, wenn es nicht so wäre.

Re es in bash zu tun. Wenn Ihr Strings gültige Bezeichner sind, können Sie Umgebungsvariablen und env verwenden könnte

Wenn Sie den Status Taste für Taste aktualisieren kann dann eine der DBM-Datenbanken arbeiten. Wenn Sie wirklich brauchen, hohe Leistung und kompakte Speicher dann Tokyo Cabinet - http://tokyocabinet.sourceforge.net/ ist das kühle Spielzeug.

Wenn Sie die ganze Sache auf einmal speichern und laden wollen (um vielleicht alte Versionen zu halten oder so) und haben nicht zu viele Daten dann verwenden Sie einfach JSON. Es ist viel schöner zu arbeiten als mit XML. Ich weiß nicht, wie die JSON-Implementierung in Python ist, aber in Perl die JSON :: XS-Modul ist irrsinnig schnell.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top