Objekte in einer Datei ablegen [gelöst]

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
ZZHAT
User
Beiträge: 10
Registriert: Sonntag 6. August 2006, 14:37

Objekte in einer Datei ablegen [gelöst]

Beitragvon ZZHAT » Dienstag 5. September 2006, 15:04

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
Zuletzt geändert von ZZHAT am Dienstag 5. September 2006, 20:08, insgesamt 1-mal geändert.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Beitragvon Rebecca » Dienstag 5. September 2006, 15:16

Wir waere es mit dem Modul pickle.
ZZHAT
User
Beiträge: 10
Registriert: Sonntag 6. August 2006, 14:37

Beitragvon ZZHAT » Dienstag 5. September 2006, 15:41

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
Monk
User
Beiträge: 16
Registriert: Montag 28. August 2006, 11:27

Beitragvon Monk » Dienstag 5. September 2006, 18:42

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
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Dienstag 5. September 2006, 19:53

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!
My god, it's full of CARs! | Leonidasvoice vs Modvoice
ZZHAT
User
Beiträge: 10
Registriert: Sonntag 6. August 2006, 14:37

Beitragvon ZZHAT » Dienstag 5. September 2006, 19:59

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.
BlackJack

Beitragvon BlackJack » Dienstag 5. September 2006, 20:44

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.
Benutzeravatar
Michael Schneider
User
Beiträge: 566
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Bremen
Kontaktdaten:

Beitragvon Michael Schneider » Dienstag 5. September 2006, 21:05

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
Diese Nachricht zersört sich in 5 Sekunden selbst ...
ZZHAT
User
Beiträge: 10
Registriert: Sonntag 6. August 2006, 14:37

Beitragvon ZZHAT » Dienstag 5. September 2006, 22:43

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

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder