37

I am trying to learn how to pickle and save an object in python. However, when I use the sample code below I get the following error: io.UnsupportedOperation: read which traces back to favorite_color = pickle.load(f_myfile). I cannot find a good explanation of this particular error. What am I doing wrong and how do I correct it?

import pickle  # or import cPickle as pickle

# Create dictionary, list, etc.
favorite_color = { "lion": "yellow", "kitty": "red" }

# Write to file
f_myfile = open('myfile.pickle', 'wb')
pickle.dump(favorite_color, f_myfile)
f_myfile.close()

# Read from file
f_myfile = open('myfile.pickle', 'wb')
favorite_color = pickle.load(f_myfile)  # variables come out in the order you put them in
f_myfile.close()
Michael
  • 13,244
  • 23
  • 67
  • 115
  • Possible duplicate of [Python error message io.UnsupportedOperation: not readable](https://stackoverflow.com/questions/44901806/python-error-message-io-unsupportedoperation-not-readable) – flaviut Aug 25 '18 at 11:55

2 Answers2

87

Change:

# Read from file 
f_myfile = open('myfile.pickle', 'wb')

to:

f_myfile = open('myfile.pickle', 'rb')

and you can see the dict obj you've pickled.

Michael
  • 13,244
  • 23
  • 67
  • 115
Jay Choo
  • 1,006
  • 8
  • 6
2

you can also use f = open("myfile.dat", "ab+") or wb+