Seite 1 von 1

Objekte in einer Datei ablegen [gelöst]

Verfasst: Dienstag 5. September 2006, 15:04
von ZZHAT
Hallo Zusammen,
ich hatte mir überlegt, ein paar Objekte in einer Datei abzulegen, wenn mein
Programm beendet wird und diese wieder eingelesen werden, wenn ich es auführe.
Unter Java hatte ich das mit "ObjectInputStream, ObjectOutputStream usw."
bewerkstelligt.
Doch war ich wohl etwas blauäugig.. :? Ich kann dazu nicht wirklich etwas finden.
Kann mir da vielleicht jemand weiter helfen?
Das wäre klasse!

Vielen Grüße
ZZHAT

Verfasst: Dienstag 5. September 2006, 15:16
von Rebecca
Wir waere es mit dem Modul pickle.

Verfasst: Dienstag 5. September 2006, 15:41
von ZZHAT
Rebecca:

Danke für den Tipp. Pickle hatte ich doch etwas anders verstanden.
Die Sache hat nur einen kleinen Harcken. Es is ein ASCII-file
und ich hätte es lieber als binary-output.
Da ich eine Datenmanipulation natürlich vermeiden möchte.
Gibts da eine Möglichkeit?

Viele Grüße
ZZHAT

Verfasst: Dienstag 5. September 2006, 18:42
von Monk
ZZHAT hat geschrieben: Da ich eine Datenmanipulation natürlich vermeiden möchte.
Ich befürchte, wenn Du Manipulationen wirklich vermeiden willst, musst Du die Datei mit der Ausgabe signieren. Die Verwendung eines Binär-Formats ist allenfalls eine Verschleierung, die Manipulationen nicht besonders erschwert.

Ich verwende zur Speicherung von Daten als Datei übrigens gerne SQLAlchemy und pysqlite.

Gruß, Markus

Verfasst: Dienstag 5. September 2006, 19:53
von Leonidas
ZZHAT hat geschrieben:Die Sache hat nur einen kleinen Harcken. Es is ein ASCII-file
und ich hätte es lieber als binary-output.
Dann meinst du Protocol 0, das ASCII-like ist. Wenn du aber Protokoll 1 oder 2 verwendest oder einfach HIGHEST_PROTOCOL dann bekommst du etwas binäres raus.

Code: Alles auswählen

import pickle
pickle.dump(dein_objekt, file_objekt, pickle.HIGHEST_PROTOCOL)
Das allein ist eigentlich kein Schutz gegen Manipulation, aber es ist immerhin etwas schwieriger.

P.S.: Hallo Monk, willkommen im Forum!

Verfasst: Dienstag 5. September 2006, 19:59
von ZZHAT
Monk:

Ist schon wahr, dass es kein wirklichen Schutz darstellt aber es hängt die Hürde etwas höher.
In meinem Fall, würde es mir schon reichen, dass man nicht ganz ohne etwas Gehirnschmalz die Daten manipulieren kann. Und da es sich um keinen wirklich sensiblen Daten handelt wäre ein größer Aufwand zum Schutz der Daten nicht sinnvoll auch wäre der Einsatz einer DB überzogen.


Viele Grüße
ZZHAT


p.s.
Ich merke schon, dem Begriff "Datenmanipulation" wird hier etwas zuviel Bedeutung gegeben. ich meine damit mehr, dass es halt nicht mal eben mit einem Texteditor zu bewerkstelligen sein sollte. :wink:

Leonidas:
Vielen Dank für deinen Tipp.
Dieser und der von Rebecca hat mir zur Lösung verholfen.

Verfasst: Dienstag 5. September 2006, 20:44
von BlackJack
ZZHAT hat geschrieben:Ich merke schon, dem Begriff "Datenmanipulation" wird hier etwas zuviel Bedeutung gegeben. ich meine damit mehr, dass es halt nicht mal eben mit einem Texteditor zu bewerkstelligen sein
Das ist es beim Protokoll 0 auch nicht wirklich wenn etwas mehr in der Datei steht. Das Format ist nicht für Menschen sondern für den Rechner vorgesehen. Und die Dateien sollten auch immer im Binärmodus geöffnet werden. Sonst überleben sie unter Umständen den Transport auf andere Plattformen nicht.

Verfasst: Dienstag 5. September 2006, 21:05
von Michael Schneider
Hallo ZZHAT,

wenn Du dennoch über eine Art Datenbank zur Verwaltung mehrerer Objekte nachdenkst, sieh Dir mal das Standard Modul shelve an:
http://docs.python.org/lib/module-shelve.html

Grüße,
Michael

Verfasst: Dienstag 5. September 2006, 22:43
von ZZHAT
Michael Schneider:

Das ist ein interessanter Hinweis, der mir sicher in naher Zukunft
sicher helfen wird. Ich kann es momentan zwar nicht austesten aber was ich
gelesen habe klang interessanter.
Ich denke damit hast mir schon mal einen Beitrag vorweg genommen. :D


Viele Grüße
ZZHAT