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)
a=pickle.load(F)
print(a)
write()
我只想打印二进制文件的嵌套列表,但它给了我输入错误
有人可以帮忙吗
输出
ENTRY1
ENTRY2
[['1', '1'], ['2', '2']]
---------------------------------------------------------------------------
EOFError Traceback (most recent call last)
<ipython-input-10-772931e3e569> in <cell line: 30>()
28 print(i)
29 print(a)
---> 30 write()
<ipython-input-10-772931e3e569> in write()
24 print(N)
25 pickle.dump(N,F)
---> 26 a=pickle.load(F)
27 for i in a:
28 print(i)
EOFError: Ran out of input
以上是我遇到的错误
这就是问题所在:
pickle.dump(N,F)
a=pickle.load(F)
文件对象包含一个内部指针,用于跟踪下一次读/写将发生的位置。
调用
pickle.dump()
后,内部指针位于刚刚写入数据的end。
因此,当您调用
pickle.load()
时,指针仍位于文件的 end 处,因此没有任何内容可读取。
您需要重置文件,以便指针返回到开头。
一种方法是致电
F.rewind()
。
或者您可以将代码分成两个独立的
with open ...
块,一个用于写入,一个用于读取。