Python EOFerror

时间:2017-04-26 17:25:18

标签: python eoferror

使用python 3.6.1并收到此错误消息:

Traceback (most recent call last):
  File "E:\Computing\CAU\task 3.py", line 72, in <module>
    UniqueWords = pickle.load(MyFile)
EOFError: Ran out of input

关于我的代码的这一部分:

`MyFile = open('SentencesCompression.txt', 'rb')
 UniqueWords = pickle.load(MyFile)
 UniqueWords2 = pickle.load(MyFile)
 WordPositions = pickle.load(MyFile)
 WordPositions2 = pickle.load(MyFile)`

可以看出,我正在尝试加载一些腌制数据。

我希望我已经提供了足够的信息。

整个代码的Pastebin:https://pastebin.com/4uEA8PcY

2 个答案:

答案 0 :(得分:0)

您已经读过打开的文件,位置指针位于文件的末尾。 Pickle无法加载任何东西,因为无法加载。

如果您确实需要加载相同的文件四次,请尝试以下操作:

with open('SentencesCompression.txt', 'rb') as MyFile:
  UniqueWords = pickle.load(MyFile)
with open('SentencesCompression.txt', 'rb') as MyFile:
  UniqueWords2 = pickle.load(MyFile)
with open('SentencesCompression.txt', 'rb') as MyFile:
  WordPositions = pickle.load(MyFile)
with open('SentencesCompression.txt', 'rb') as MyFile:
  WordPositions2 = pickle.load(MyFile)

运算符with用于确保文件正确关闭。

答案 1 :(得分:0)

你误解了pickle.load()应该如何运作。

你可能想要更多的东西:

data = pickle.load(MyFile)
UniqueWords = data[0]
UniqueWords2 = data[1]
# ... etc.

假设您挑选的数据(pickle.dump())是一个列表。如果腌制字典,那么你需要解压缩键/值对。

了解加载pickle(或JSON)数据的最佳方法是读取将其转储出来的代码。