0

使用 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

4

2 回答 2

0

您误解了pickle.load()应该如何工作。

您可能想要更多类似的东西:

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

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

学习加载腌制(或 JSON)数据的最佳方法是阅读将其转储出来的代码。

于 2017-04-26T17:38:58.677 回答
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用于确保文件正确关闭。

于 2017-04-26T17:29:07.617 回答