mrshoul hat geschrieben:Mich würde aber noch interessieren was der Vorteil von pickle und Konsorten in diesem Kontext ist.
Du hast ja für Deine Daten eine Liste 'daten', die Du, man glaubt es kaum, von irgendwoher mit Daten füllst. Diese Liste voll mit Daten willst Du ja nach dem Programmende nicht verlieren.
Eine Liste, ein dictionary oder Klassen als Datenpool lassen sich aber nicht so ohne weiteres abspeichern. Du musst diese Objekte erst einmal "zerlegen" und kannst dann ihre Bestandteile in eine Form bringen, die sich speichern lässt.
'pickle' hat gegenüber anderen Möglichkeiten den Vorteil, dass es für Dich das Zerlegen, sprich das Serialisieren der Objekte übernimmt. Du kannst also fast jedes Pythonobjekt ganz einfach abspeichern. Und wenn Du es dann wieder lädst, steht es in gleicher Form wieder bereit.
Nachteil von Lösungen wie 'pickle' oder 'shelve' ist, dass Du immer den gesamten Datenbestand speichern und laden musst. Und dadurch, dass Du nicht nur die Werte Deiner Daten, sondern auch Informationen der Strukturen, in denen Deine Daten liegen speicherst, ist ein späteres Abändern dieser Strukturen nicht so einfach möglich.
Zudem ist es auch nicht so ohne weiteres möglich, gepickelte Daten außerhalb der Pythonanwendung, mit der diese Daten erstellt wurden, zu verwenden.
Und die Vorteile, die Datenbanksysteme mit sich bringen, hast Du mit 'pickle' auch nicht.
Das klingt jetzt eher nach mehr Nachteilen als Vorteile. Man muss halt abwägen, was einem wichtig ist. Wenn man die Möglichkeiten, die ein Datenbanksystem bietet, letztlich nicht wirklich braucht, dann sind 'pickle', 'shelve', 'json' etc. 'ne tolle Sache, da sie schnell und problemlos implementiert sind.
Ach ja: 'json', 'yaml', 'csv' ... haben den Vorteil, dass die Datei, die Du damit erhältst, in einem Format vorliegt, das Du mit jedem Texteditor betrachten und bearbeiten kannst und mit vertretbarem Aufwand auch in andere Anwendungen importieren kannst.
mutetella