python - Pickle.dump ব্যবহার করা হচ্ছে-TypeError: str, না বাইট হতে হবে




python-3.x (2)

আমি পাইথন 3.3 ব্যবহার করছি এবং একটি সহজ অভিধান বেছে নেওয়ার চেষ্টা করার সময় আমি একটি রহস্যজনক ত্রুটি করছি।

এখানে কোডটি রয়েছে:

import os
import pickle
from pickle import *
os.chdir('c:/Python26/progfiles/')

def storvars(vdict):      
    f = open('varstor.txt','w')
    pickle.dump(vdict,f,)
    f.close()
    return

mydict = {'name':'john','gender':'male','age':'45'}
storvars(mydict)

এবং আমি পেতে পারি:

Traceback (most recent call last):
  File "C:/Python26/test18.py", line 31, in <module>
    storvars(mydict)
  File "C:/Python26/test18.py", line 14, in storvars
    pickle.dump(vdict,f,)
TypeError: must be str, not bytes

আউটপুট ফাইল বাইনারি মোডে খোলা প্রয়োজন:

f = open('varstor.txt','w')

করা প্রয়োজন:

f = open('varstor.txt','wb')

শুধু একই সমস্যা ছিল। পাইথন 3 এ, বাইনারি মোড 'wb', 'rb' নির্দিষ্ট করা উচিত তবে পাইথন 2x এ, এটি প্রয়োজন হয় না। যখন আপনি পাইথন 2x এর উপর ভিত্তি করে টিউটোরিয়ালগুলি অনুসরণ করেন, তখনই আপনি এখানে আছেন।

import pickle

class MyUser(object):
    def __init__(self,name):
        self.name = name

user = MyUser('Peter')

print("Before serialization: ")
print(user.name)
print("------------")
serialized = pickle.dumps(user)
filename = 'serialized.native'

with open(filename,'wb') as file_object:
    file_object.write(serialized)

with open(filename,'rb') as file_object:
    raw_data = file_object.read()

deserialized = pickle.loads(raw_data)


print("Loading from serialized file: ")
user2 = deserialized
print(user2.name)
print("------------")




pickle