ValueError: unsichere string-Gurke
Wenn ich versuche etwas laden ausgegeben ich mit cPickle, bekomme ich die Fehlermeldung:
ValueError: insecure string pickle
Sowohl die dumping-und be-arbeiten fertig sind, auf dem gleichen computer, so gleichen OS: Ubuntu 8.04.
Wie könnte ich dieses problem lösen?
Wenn ich cPickle.dump das Objekt, warum kann ich nicht cPickle.laden Sie dieses Objekt? Ist es nicht seltsam? Python macht dumme Dinge einige Male.
Ich habe das, wenn ich gespeichert gebeizt-Daten in Datenbank in der django-Anwendung. Dann habe ich manuell geändert wird die Zeichenfolge über das admin-interface und brach es. (Ich denke, dass django fiel
Wie haben Sie es zu beheben . Ich bin mit dem gleichen problem bei der Bearbeitung mit django-admin . Vielen Dank im Voraus .
veränderte Werte mit shell (und zog dann nach json)
Ich habe das, wenn ich gespeichert gebeizt-Daten in Datenbank in der django-Anwendung. Dann habe ich manuell geändert wird die Zeichenfolge über das admin-interface und brach es. (Ich denke, dass django fiel
\n
Zeichen)Wie haben Sie es zu beheben . Ich bin mit dem gleichen problem bei der Bearbeitung mit django-admin . Vielen Dank im Voraus .
veränderte Werte mit shell (und zog dann nach json)
InformationsquelleAutor Peter Long | 2009-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
"sind viel wahrscheinlicher als eine nie beobachtete Fehler in Python, der sich in eine Funktionalität, die Milliarden Male am Tag, überall auf der Welt": es erstaunt mich immer wieder, wie cross Menschen erhalten in diesen Foren.
Einem einfachen Weg, um dieses problem durch das vergessen, um den stream schließen, dass Sie für das Abladen der Daten Struktur. Ich habe gerade
Welches ist, warum ich kam hier an Erster Stelle, weil ich nicht sehen konnte, was ich getan hatte falsch.
Und dann habe ich tatsächlich darüber nachgedacht, anstatt einfach nur hierher zu kommen, und erkannte, dass ich getan haben sollte:
Einfach zu vergessen. Nicht müssen Leute gesagt, dass Sie Idioten sind.
Ich hatte den Fehler, obwohl ich in der Nähe nennen(). Es ist eine sehr dumme Fehlermeldung nichts brauchbares. Am Ende dos2unix über die Datei war die Lösung, die geholfen hat.
Danke für die Antwort. Dein letzter Satz ist besonders apropos.
Ramsay: ich habe das gleiche Problem "ValueError: unsichere string-Gurke". Aber mein pickle-Datei ist etwa 179MB. Es wurde bereits weggeworfen. Ohne re-dumping, wie kann ich Sie laden ?
Lukas, verwenden Sie die
with
!InformationsquelleAutor Allan Ramsay
Habe ich diese Fehlermeldung in Python 2.7, da der öffnen-Modus 'rb':
So, für Python 2 'mode' sollte 'r'
Außerdem habe ich mich gewundert, dass Python 3 unterstützt nicht pickle format von Python 2, und im Fall, wenn Sie versuchen, zu laden pickle-Datei erstellt, in Python 2 erhalten Sie:
InformationsquelleAutor Oleg Neumyvakin
Überprüfen dieser thread. Peter Otten sagt:
und zeigt eine einfache Möglichkeit zur Reproduktion solcher "Korruption". Steve Holden, in der follow-up-post, schlägt einen anderen Weg, um das problem verursachen würde mismatch 'rb' und 'wb' (aber in Python 2 und Linux, dass bestimmte Fehler passieren sollte unbemerkt).
Ich kenne keine solche Fälle (aber überprüfen Sie die Python-tracker). Beizen kann (und oft nicht für den Benutzer-codierten Klassen) call user-codiert Methoden wie
__reduce__
&c, damit Fehler in Benutzer-codiert Methoden sind viel wahrscheinlicher als eine nie beobachtete Fehler in Python, der sich in eine Funktionalität, die verwendet wird, Milliarden mal am Tag auf der ganzen Welt. (Benutzer-codiert kann gut sein, von was auch immer Module von Drittanbietern, die Sie verwenden, natürlich, es ist einfach "im Gegensatz zu Python-internen Maschinen"!-).InformationsquelleAutor Alex Martelli
Was machst du mit dem Daten zwischen
dump()
undload()
? Es ist durchaus üblich, Fehler zu speichern, gebeizt Daten in die Datei im Textmodus geöffnet (unter Windows) oder in der Datenbank Speicherung in der Weise, dass funktioniert nicht für binäre Daten (VARCHAR, TEXT-Spalten, in einigen Datenbanken, einige der Schlüssel-Wert-Speicher). Versuchen Sie zu vergleichen, gebeizt Daten, die Sie übergeben, um die Lagerung und sofort abgerufen von ihm.InformationsquelleAutor Denis Otkidach
Wenn jemand diesen Fehler mit
youtube-dl
dieses Problem hat das Update: https://github.com/rg3/youtube-dl/issues/7172#issuecomment-242961695InformationsquelleAutor Pysis
Dieser Fehler kann auch auftreten, mit python 2 (und frühe Versionen von python 3) wenn Sie Ihre Gurke ist groß (Python-Problem #11564):
Diese Einschränkung richtete sich mit der Einführung des pickle Protokolls 4 in python 3.4 (PEP 3154). Leider, diese Funktion wurde nicht zurück portiert zu python 2, und wohl auch nicht immer sein. Wenn dies Ihr problem, und Sie müssen die Verwendung von python 2 Gurke, das beste, was Sie tun können, ist zu reduzieren die Größe der Gurke, z.B., anstatt dem Beizen ist eine
list
, Gurke die Elemente einzeln in einemlist
Gurken.InformationsquelleAutor Paul Price
Gleiche problem mit einer Datei, die wurde mit python auf windows, und reloaded mit python auf linux.
Lösung : dos2unix auf die Datei vor dem Einlesen in linux : funktioniert wie ein Charme !
Ich habe das gleiche problem, gelöst durch die Verwendung von dos2unix. Wenn Sie nicht über dieses Modul, können Sie ganz einfach selbst einen schreiben, siehe hier: link
Ich hatte das gleiche problem und es behoben durch Modifikation des Quellcodes: ersetzen Sie "r" mit "rb" und "w" mit "wb", so pickle-Dateien identisch, die auf Linux und Windows und kann geladen werden von beiden Betriebssystemen.
InformationsquelleAutor am_technix
Bekam ich die
Python ValueError: insecure string pickle
Nachricht in einer anderen Weise.Mir passierte es nach einem
base64
Codierung eine binäre Datei und durchurllib2
sockets.Anfangs war ich Nachbereitung eine Datei wie diese
, Aber auf dem server die hash-gehalten kommt es anders und zweitens für einige Binärdateien
Und unpickling gab
insecure string pickle
NachrichtABER DER ERFOLG
Was für mich gearbeitet war der Einsatz
urlsafe_b64encode()
Und entschlüsseln mit
Referenzen
http://docs.python.org/2/library/base64.html
https://tools.ietf.org/html/rfc3548.html#section-3
InformationsquelleAutor HeyWatchThis
Dies ist, was mir passiert ist, vielleicht einen kleinen Teil der Bevölkerung, aber ich möchte ihn dennoch hier, für Sie:
Interpreter (Python ist3) gegeben hätte, Sie eine Fehlermeldung besagt, dass es erforderlich, die Eingangs-stream-Datei in bytes, und nicht als string, und Sie mag sich geändert haben, die offenen Modus-argument von 'r' nach 'rb', und jetzt ist es zeigt Ihnen, dass der string fehlerhaft ist, und das ist, warum Sie hier gekommen sind.
Die einfachste Möglichkeit für solche Fälle ist die Installation von Python2 (Sie können installieren 2.7) und führen Sie dann das Programm mit Python 2.7 Umgebung, so dass es unpickles Ihre Datei ohne Problem. Grundsätzlich habe ich verschwendet viel Zeit Scannen von meinem string zu sehen, ob es war in der Tat beschädigt, wenn alle die ich tun musste, war, ändern Sie den Modus der öffnung der Datei von rb zu r, und verwenden Sie dann Python2 zu unpickle die Datei. Also ich bin gerade dabei, diese Informationen da draußen.
InformationsquelleAutor Arijit
Lief ich in diese frühere, diesen thread gefunden, und davon ausgegangen, dass ich immun war, um die Datei schließen Ausgabe erwähnt, in ein paar dieser Antworten, da ich mit einem
with
Aussage:Da ich jedoch drückte die temp-Datei aus innen die
with
die Datei noch nicht geschlossen, also die Datei, die ich stieß war abgeschnitten. Dies resultierte in der gleicheninsecure string pickle
Fehler im script, das Lesen der Datei auf dem remote-Computer.Zwei mögliche Lösungen: Halten Sie die Datei öffnen und die Kraft ein flush:
Oder stellen Sie sicher, dass die Datei geschlossen ist, bevor etwas zu tun mit:
InformationsquelleAutor 0x5453