输入不足

问题描述 投票:0回答:1
  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

以上是我遇到的错误

python error-handling pickle
1个回答
0
投票

这就是问题所在:

pickle.dump(N,F) 
a=pickle.load(F)

文件对象包含一个内部指针,用于跟踪下一次读/写将发生的位置。

调用

pickle.dump()
后,内部指针位于刚刚写入数据的end

因此,当您调用

pickle.load()
时,指针仍位于文件的 end 处,因此没有任何内容可读取。

您需要重置文件,以便指针返回到开头。

一种方法是致电

F.rewind()

或者您可以将代码分成两个独立的

with open ...
块,一个用于写入,一个用于读取。

© www.soinside.com 2019 - 2024. All rights reserved.