如何修复使用Pickle模块时出现的TypeError: file must have a 'read' attribute错误
报错原因&修复方案
你代码里存在多个逻辑错误,直接触发报错的是pickle.dump的传参错误,所有问题点整理如下:
pickle.dump()要求第二个参数为已打开的可写文件对象,你传入的是字符串类型的文件路径'bruh.txt',字符串本身没有read/write属性,直接触发了本次TypeError- 读写文件路径不匹配:写入逻辑指向
bruh.txt,读取逻辑却读取bruh.bin,就算写入成功后续也读不到对应内容 - 文件打开模式错误:两个上下文管理器都用了
rb(二进制只读)模式,写入操作需要用wb(二进制写入)模式打开 pickle.dump()无返回值,不需要赋值给变量,强制赋值只会把原变量覆盖为None
修复后的可运行代码如下:
import pickle myvar = input("test: ") # 写入pickle数据:用wb模式打开对应文件,传入文件对象给dump方法 with open("bruh.bin","wb") as f: pickle.dump(myvar, f) # 读取pickle数据:用rb模式打开同一个文件 with open("bruh.bin","rb") as f: myvar = pickle.load(f) print(myvar)
内容的提问来源于stack exchange,提问作者Blobby YT
相关产品推荐
相关产品推荐

