Probleme mit: pickle und py2exe

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.
Antworten
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Gast009 hat geschrieben:Was meinst du damit?
Statt

Code: Alles auswählen

f = file('files.txt', 'r')
besser

Code: Alles auswählen

f = file('files.txt', 'rb')
und statt

Code: Alles auswählen

f = file('files.txt', 'w')
besser

Code: Alles auswählen

f = file('files.txt', 'wb')
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
N317V
User
Beiträge: 504
Registriert: Freitag 8. April 2005, 13:23
Wohnort: München

BlackJack hat geschrieben:Und pickle Dateien bitte immer im Binärmodus mit 'rb' bzw. 'wb' öffnen.
Wieso denn?
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.

Wie man Fragen richtig stellt
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

N317V hat geschrieben:
BlackJack hat geschrieben:Und pickle Dateien bitte immer im Binärmodus mit 'rb' bzw. 'wb' öffnen.
Wieso denn?
Weil das auch im Protocoll 0 noch Binärdaten sind, deren Zeilenumbrüche sind immer so wie sie sind (ich weiß nicht ob es CRLF ist oder etwas anderes), wenn man die Zeilenumbrüche ändert funktionierts nicht mehr. Zumindest habe ich das mal irgendwo gelesen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
gAst005

Leonidas hat geschrieben:
Gast009 hat geschrieben:Was meinst du damit?
Statt

Code: Alles auswählen

f = file('files.txt', 'r')
besser

Code: Alles auswählen

f = file('files.txt', 'rb')
und statt

Code: Alles auswählen

f = file('files.txt', 'w')
besser

Code: Alles auswählen

f = file('files.txt', 'wb')
Wenn ich das aber so mache, dann meckert er bei der nächsten zeile "daten2 = pickle.loads( f.read() )" rum.

Mein Codeabschnitt:

Code: Alles auswählen

f=file("files2.txt",'rb')
daten2 = pickle.loads( f.read() )
f.close()
Folgender Fehler zeigt er an:
Traceback (most recent call last):
File "C:\xxy.py", line 43, in -toplevel-
daten2 = pickle.loads( f.read() )
File "C:\Python24\lib\pickle.py", line 1394, in loads
return Unpickler(file).load()
File "C:\Python24\lib\pickle.py", line 872, in load
dispatch[key](self)
File "C:\Python24\lib\pickle.py", line 980, in load_string
raise ValueError, "insecure string pickle"
ValueError: insecure string pickle
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

gAst005 hat geschrieben:Mein Codeabschnitt:

Code: Alles auswählen

f=file("files2.txt",'rb')
daten2 = pickle.loads( f.read() )
f.close()
Dafür hat pickle ja auch die load()-Funktion (ohne das s hintendran, welches auf String weist):

Code: Alles auswählen

f = file("files2.txt",'rb')
daten2 = pickle.load(f)
f.close()
(habe ich allerdings nicht getestet, nur schnell meine Erinnerung mit der Modul-Dokumentation verglichen)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten