Fehler beim laden der Gurke

Nicht in der Lage zum laden einer pickle-Datei. Ich bin mit python 3.5

import pickle
data=pickle.load(open("D:\\ud120-projects\\final_project\\final_project_dataset.pkl", "r"))

TypeError: ein bytes-Objekt wie erforderlich ist, nicht ’str‘

.
.

Habe auch versucht:

import pickle
data=pickle.load(open("D:\\ud120-projects\\final_project\\final_project_dataset.pkl", "rb"))

UnpicklingError: der opcode STRING-argument muss angegeben werden,

.
.

Gleichen Fehler, auch bei der Verwendung mit Anweisungen

import pickle
with open("D:\\ud120-projects\\final_project\\final_project_dataset.pkl", "rb") as f:
    enron_data = pickle.load(f)
InformationsquelleAutor Nimish Bansal | 2017-07-28



2 Replies
  1. 1

    Müssen Sie auf jeden Fall die „rb“, um die Datei Lesen, das löst das erste problem.

    Die zweite Ausgabe (STRING opcode und argument) ist, weil die Datei nicht über Unix-Zeilenenden. Sie müssen den pkl-Datei durch ein script zu konvertieren. Wenn Sie diesen thread, es gibt ein script namens „dos2unix“, die lösen das für Sie:

    Wie konvertieren von DOS/Windows-Zeilenumbruch (CRLF) auf Unix-newline (\n) in ein Bash-script?

  2. 0

    Nur der Fix für mich war(Beantwortet von Monkshow92 in Github) :


    Die pickle-Datei mit der Unix-neuen Linien sonst mindestens Python 3.4 ist C Gurke-parser schlägt fehl, mit der Ausnahme: Gurke.UnpicklingError: der opcode STRING-argument muss angegeben werden
    Ich denke, dass einige git-Versionen kann die änderung der Unix-Zeilenumbrüche (‚\n‘), um DOS-Linien (‚\r\n‘).

    Können Sie diesen code ändern „word_data.pkl“ zu „word_data_unix.pkl“, und verwenden Sie dann die neue .pkl-Datei auf das Skript „nb_author_id.py“:
    dos2unix.txt

    #!/usr/bin/env python
    """
    convert dos linefeeds (crlf) to unix (lf)
    usage: dos2unix.py 
    """
    original = "word_data.pkl"
    destination = "word_data_unix.pkl"
    
    content = ''
    outsize = 0
    with open(original, 'rb') as infile:
        content = infile.read()
    with open(destination, 'wb') as output:
        for line in content.splitlines():
            outsize += len(line) + 1
            output.write(line + str.encode('\n'))
    
    print("Done. Saved %s bytes." % (len(content)-outsize))

    dos2unix.py passte aus:
    http://stackoverflow.com/a/19702943

    Kleiner Tweak, den ich gefunden habe, ist , das Ändern der „r“ – Modus auf „rb“ byte-Objekt-Modus.
    Und schließlich die Umwandlung aller die .pkl-Dateien unter Verwendung der obigen python-Skript zum konvertieren von Dos zu Unix !

    Antwort-Link : https://github.com/udacity/ud120-projects/issues/46
    Full Credit : Monkshow92

    • Tut mir Leid, ich downvoted diese Antwort, weil Sie die angebotenen genau die gleiche Lösung, die ich habe.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.