首页 > 代码库 > python文件操作:pickle模块多次dump后出现的读取问题
python文件操作:pickle模块多次dump后出现的读取问题
pickle模块在python中是用于数据持久化的,基本用法涉及到的也就是dump和load,亦或者dumps和loads。
pickle在使用过程中有一个特点,就是由于其特殊的内容标记,使得文件dump几次,就必须load几次才能将数据全部读出来,用代码来展现就是如下形式:
import pickle a=1 b=2 c=3 with open("ceshi.txt","wb") as f: pickle.dump(a,f) pickle.dump(b,f) pickle.dump(c,f) f=open("ceshi.txt","rb") with open("ceshi.txt","rb") as f : print(pickle.load(f))
最终结果为:
1
如果想要读取全部的值,那么只能是dump了几次,就load几次,如下:
import pickle a=1 b=2 c=3 with open("ceshi.txt","wb") as f: pickle.dump(a,f) pickle.dump(b,f) pickle.dump(c,f) f=open("ceshi.txt","rb") with open("ceshi.txt","rb") as f : print(pickle.load(f)) print(pickle.load(f)) print(pickle.load(f))
最终结果为:
1
2
3
我们在后续读写文件时,不可能记住所有的dump次数,也就无法准确的使用load多次的方式来取出值。我们可以使用另外一种方式来进行曲线救国:
直接无限循环执行pickle.load命令,直至其报错才停止。
import pickle a=1 b=2 c=3 with open("ceshi.txt","wb") as f: pickle.dump(a,f) pickle.dump(b,f) pickle.dump(c,f) f=open("ceshi.txt","rb") with open("ceshi.txt","rb") as f : while True: try: print(pickle.load(f)) except: break
最终结果为:
1
2
3
通过这种方式,我们也可以做到将pickle生成的文件内容全部取出来。
python文件操作:pickle模块多次dump后出现的读取问题
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。