Seite 1 von 1

Verfasst: Donnerstag 5. Januar 2006, 21:33
von Leonidas
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')

Verfasst: Montag 9. Januar 2006, 11:56
von N317V
BlackJack hat geschrieben:Und pickle Dateien bitte immer im Binärmodus mit 'rb' bzw. 'wb' öffnen.
Wieso denn?

Verfasst: Montag 9. Januar 2006, 14:38
von Leonidas
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.

Verfasst: Donnerstag 12. Januar 2006, 17:33
von 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

Verfasst: Donnerstag 12. Januar 2006, 18:04
von Leonidas
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)