2017-04-26 59 views
0

使用Python 3.6.1,並收到此錯誤信息:的Python的EOFError

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)` 

可以看出,我試圖加載回一些醃製數據。

我希望我已經提供了足夠的信息。

引擎收錄整個代碼:https://pastebin.com/4uEA8PcY

回答

0

您已經閱讀你打開的文件和位置指針是在文件的結尾。醃菜無法加載任何東西,因爲沒有東西要加載。

如果你真的需要加載相同的文件四次,試試這個:

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用於確保文件正確關閉。

+0

壓縮或加載文件 回答的話 #Compress #Load 負載 多少句子你壓縮? 2或3 回溯(最近通話最後一個): 文件 「E:\計算\ CAU \任務3.py」,74行,在 UniqueWords =和pickle.load(MyFile的) 的EOFError:跑出的輸入 >>>錯誤仍然存​​在,但感謝您的努力。我認爲它與Pickup加載過程的UniqueWords2列表有關。 – JoshuaG

0

您誤會了pickle.load()應該如何工作。

你可能想的東西有點更像是:

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

假設您(pickle.dump())醃製的數據是一個列表。如果醃字典,那麼你需要解壓鍵/值對。

學習加載pickled(或JSON)數據的最佳方式是讀取將其轉儲出去的代碼。

+0

感謝您的建議,但錯誤仍然存​​在 – JoshuaG

+0

如果可能,發佈創建此* SentencesCompression.txt * pickle文件的最小代碼片段。否則,從*'>>>'*解釋器提示符處執行'data = pickle.load(MyFile)'並使用'dir()'和其他內省特性來探索數據結構,以便您能夠弄清楚如何提取它正在嘗試使用的部分。 –

+0

嗨,吉姆,我只是想刪除線程,因爲我已經解決了這個問題。我檢查了代碼寫入的文件,由於某種原因它是空的。我將腳本保存到另一個文件夾,然後再次執行壓縮過程。它開始再次寫入,當我運行代碼時,錯誤已經停止。感謝您的幫助 – JoshuaG