开发者

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开发者_StackOverflow社区 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.


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.


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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜