Sean
Sean

Reputation: 2048

Pickle problem writing to file

I have a problem writing a file with Pickle in Python

Here is my code:

test = "TEST"
f1 = open(path+filename, "wb", 0)
pickle.dump(test,f1,0)
f1.close()
return

This gives me the output in the .txt file as VTESTp0. I'm not sure why this is? Shouldn't it just have been saved as TEST?

I'm very new to pickle and I didn't even know it existed until today so sorry if I'm asking a silly question.

Upvotes: 2

Views: 3471

Answers (2)

ThomasH
ThomasH

Reputation: 23516

Think of pickling as saving binary data to disk. This is interesting if you have data structures in your program like a big dict or array, which took some time to create. You can save them to a file with pickle and read them in with pickle the next time your program runs, thus saving you the time it took to build the data structure. The downside is that other, non-Python programs will not be able to understand the pickle files.

As pickle is quite versatile you can of course also write simple text strings to a pickle file. But if you want to process them further, e.g. in a text editor or by another program, you need to store them verbatim, as Thomas Wouters suggests:

test = "TEST"
f1 = open(path+filename, "wb", 0)
f1.write(test)
f1.close()
return

Upvotes: 0

Thomas Wouters
Thomas Wouters

Reputation: 133415

No, pickle does not write strings just as strings. Pickle is a serialization protocol, it turns objects into strings of bytes so that you can later recreate them. The actual format depends on which version of the protocol you use, but you should really treat pickle data as an opaque type.

If you want to write the string "TEST" to the file, just write the string itself. Don't bother with pickle.

Upvotes: 5

Related Questions