2017-04-26 4 views
0

Python 3.6.1 und immer diese Fehlermeldung: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 

zu diesem Abschnitt meines Code:

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

Wie man sehen kann, ich versuche, etwas in Essig eingelegte zu laden zurück Daten.

Ich hoffe, ich habe genug Informationen gegeben.

Pastebin des gesamten Code: https://pastebin.com/4uEA8PcY

Antwort

0

Sie haben bereits lesen Sie die Datei geöffnet und der Positionszeiger befindet sich am Ende der Datei. Pickle kann nichts laden, da nichts zu laden ist.

Wenn Sie wirklich die gleiche Datei viermal müssen geladen werden, versuchen Sie dies:

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) 

Operator with verwendet wird, um sicherzustellen, dass die Datei ordnungsgemäß geschlossen ist.

+0

Kompresse oder Datei laden Antwort mit den Worten #Compress #LOAD Last Wie viele Sätze, die Sie komprimieren haben? 2 oder 3 Traceback (letzter Anruf zuletzt): File "E: \ Computing \ CAU \ Aufgabe 3.py", Zeile 74, in UniqueWords = pickle.load (MyFile) EOFError: Ran out von Eingang >>> Der Fehler besteht immer noch, aber danke für die Mühe. Ich denke, es hat etwas mit der UniqueWords2-Liste der Gurke laden Prozess – JoshuaG

0

Sie missverstehen, wie pickle.load() soll funktionieren.

Sie wollen wahrscheinlich etwas ein bisschen mehr wie:

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

Unter der Annahme, dass die Daten, die Sie gebeizt (mit pickle.dump()) war eine Liste. Wenn ein Wörterbuch gebeizt wird, müssen Sie die Schlüssel/Wert-Paare entpacken.

Die beste Methode, geladene (oder JSON-) Daten zu laden, besteht darin, den Code zu lesen, der den Fehler verursacht.

+0

Vielen Dank für den Vorschlag, aber der Fehler weiterhin bestehen – JoshuaG

+0

Wenn möglich post den minimalen Code-Schnipsel, der diese * SentencesCompression.txt * Pickle-Datei erstellt. Wenn dies nicht der Fall ist, führen Sie 'data = pickle.load (MyFile)' aus der * '>>>' * - Interpreter-Eingabeaufforderung aus und verwenden Sie 'dir()' und andere Introspektionsfunktionen, um die Datenstruktur zu untersuchen, damit Sie herausfinden können, wie Sie extrahieren die Teile davon, die du verwenden willst. –

+0

Hallo, Jim, ich wollte nur den Thread löschen, da ich das Problem gelöst hatte. Ich überprüfte die Datei, in die der Code geschrieben wurde, und aus irgendeinem Grund war sie leer. Ich habe meinen Skriptspeicher in einen anderen Ordner verschoben und den Komprimierungsprozess erneut durchlaufen. Es fing wieder an zu schreiben und als ich den Code ausführte, war der Fehler beendet. Vielen Dank für Ihre Hilfe. – JoshuaG

Verwandte Themen