【发布时间】:2016-09-02 19:44:17
【问题描述】:
我正在尝试执行一项简单的任务:
1.反序列化之前序列化的对象
2. 更新这个对象
3. 将其序列化以备后用
我试图用pickle 来做这件事,但没有运气。
我首先这样做:
empty_list = []
f = open('backup.p', 'wb')
pickle.dump(empty_list, f)
f.close()
及以后:
f = open('backup.p', 'rb+')
l = pickle.load(f)
l.append('string')
pickle.dump(l, f)
f.close()
但是当我尝试再次加载本应更新的列表时:
f = open('backup.p', 'rb')
updated_list = pickle.load(f)
print(updated_list) # prints [] instead of ['string']
f.close()
为什么第二次调用dump() 不会用新列表['string'] 覆盖backup.p 的内容?我是否必须删除 buckup.p 才能获得所需的行为?
【问题讨论】:
标签: python serialization deserialization pickle