使用pickle读写二进制文件时出现Ran out of input错误求助
解决pickle读取时的EOFError问题
你遇到的EOFError是因为写入数据后,文件指针停在了文件末尾,直接调用pickle.load()会读到文件结束位置,没有数据可以加载。
解决方法很简单:在执行pickle.dump()之后,需要将文件指针移回文件开头,再执行读取操作。可以用文件对象的seek(0)方法实现,0代表文件的起始位置。
修改后的代码如下:
import pickle def write(): with open("STOCK.DAT","wb+") as F: N=[] for i in range(1,3): a=input("ENTRY") N.append([a,a]) print(N) pickle.dump(N,F) # 将文件指针移回文件起始位置 F.seek(0) a=pickle.load(F) print(a) write()
额外补充:如果后续需要单独读取这个文件,建议使用rb只读模式打开,避免误操作覆盖数据,示例代码如下:
import pickle def read_stock(): with open("STOCK.DAT", "rb") as F: data = pickle.load(F) print(data) read_stock()
内容的提问来源于stack exchange,提问作者Piyush Baweja
相关产品推荐
相关产品推荐

