ฉันกำลังพยายามบันทึกและโหลดวัตถุโดยใช้pickle
โมดูล
ก่อนอื่นฉันประกาศวัตถุของฉัน:
>>> class Fruits:pass
...
>>> banana = Fruits()
>>> banana.color = 'yellow'
>>> banana.value = 30
หลังจากนั้นฉันเปิดไฟล์ชื่อ 'Fruits.obj' (ก่อนหน้านี้ฉันสร้างไฟล์. txt ใหม่และฉันเปลี่ยนชื่อ 'Fruits.obj'):
>>> import pickle
>>> filehandler = open(b"Fruits.obj","wb")
>>> pickle.dump(banana,filehandler)
หลังจากทำสิ่งนี้ฉันปิดเซสชันของฉันและฉันเริ่มต้นใหม่และฉันใส่ครั้งต่อไป (พยายามเข้าถึงวัตถุที่ควรจะบันทึก):
file = open("Fruits.obj",'r')
object_file = pickle.load(file)
แต่ฉันมีข้อความนี้:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python31\lib\pickle.py", line 1365, in load
encoding=encoding, errors=errors).load()
ValueError: read() from the underlying stream did notreturn bytes
ฉันไม่รู้ว่าต้องทำอย่างไรเพราะฉันไม่เข้าใจข้อความนี้ มีใครรู้บ้างว่าฉันจะโหลดวัตถุ 'กล้วย' ได้อย่างไร ขอบคุณ!
แก้ไข: ตามที่คุณบางคนแนะนำฉันใส่:
>>> import pickle
>>> file = open("Fruits.obj",'rb')
ไม่มีปัญหา แต่สิ่งต่อไปที่ฉันใส่คือ:
>>> object_file = pickle.load(file)
และฉันมีข้อผิดพลาด:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python31\lib\pickle.py", line 1365, in load
encoding=encoding, errors=errors).load()
EOFError