[Tutor] Need help printing a pickled data

Steven D'Aprano steve at pearwood.info
Tue Jun 25 00:57:28 CEST 2013


On Mon, Jun 24, 2013 at 06:05:37PM -0400, Matt D wrote:

> I have been unable to find a way to write pickled data to text file.

Normally you write pickled data	to a file like this:

import pickle

data = {'something': 'goes', 'here': 42}
with open("/path/to/file/name.pickle", "rb") as f:
    pickle.dump(data, f)


And then read it back again like this:

with open("/path/to/file/name.pickle") as f:
    data = pickle.load(f)


You certainly shouldn't be writing pickle data to a log file! Firstly, 
log files are usually opened in	text mode, not binary mode, so it 
probably won't work, and secondly even if it did work, you will	be 
dumping	a load of pickled binary data into the middle of what should be
a text file. That's a bad idea.	And even if it succeeded, what are you  
going to learn from seeing a line like this:

\x80\x03}q\x00(X\x04\x00\x00\x00hereq\x01K*X\t\x00\x00\x00somethingq\x02X\x04\x00\x00\x00goesq\x03u. 

in the middle of your log file? Log files are supposed to be for humans 
to read, not for binary data like a pickle.


> My last attempt was to add the last two lines:
[...]
> I cant figure out why these last two line dont write to the .txt file
> after the program has received the pickled Python dictionary?  Very
> stumped.

What does it do? Do you get an error?


-- 
Steven


More information about the Tutor mailing list