2016-06-24 3 views
0

Ich habe den folgenden Code in Jupyter ausgeführt und versucht, mit einer Binärdatei namens bfile umzugehen. Als ich jedoch die Datei in Jupyter geöffnet habe, habe ich die Fehlermeldung erhalten, wie im Bild unten gezeigt. Und als ich die Datei mit dem Editor geöffnet habe, habe ich eine Menge chaotischer Charaktere bekommen. Jeder ruft Hilfe (bitte klar in der Sprache sein, ich bin nicht vertraut mit Codierung Probleme wie UTF, Unicode in meiner täglichen Arbeit)?Fehler beim Codieren in Jupyter beim Schreiben und Lesen von Binärdateien mit Python

bdata = bytes(range(0, 256)) 
with open('bfile', 'wb') as fin: 
    fin.write(bdata) 
with open('bfile', 'rb') as fin: 
    fin.seek(-1, 2) 
    fin.tell() 

enter image description here

Fehlermeldung

Fehler! Y: \ Desktop \ BFILE ist nicht UTF-8

codierten

Behinderte speichern.

See-Konsole für weitere Details.

Die chaotischen Charaktere, die ich bekam, als ich die Datei geöffnet mit dem Editor ist, enter image description here

+0

** BITTE NICHT TEXT AS IMAGES Post **. Kopieren Sie den Text und fügen Sie ihn in Ihre Frage ein. Bilder sind nicht durchsuchbar und können von Bildschirmlesern nicht für Personen mit Sehbehinderungen interpretiert werden. Verwenden Sie den Link [Bearbeiten], um Ihre Frage zu ändern. Weitere Informationen finden Sie unter [this] (http://meta.stackoverflow.com/a/285557/1426065). – MattDMo

+0

Korrigiert @ MattDMo – Nicholas

+0

Ist es ein Python 2-Arbeitsbereich oder Python 3? – erip

Antwort

0

Sie erscheinen die Binärdatei, um zu versuchen, und öffnen Sie einfach geschrieben (nur mit den binären Werten 0 bis 255 einschließlich) in Jupiter. So funktioniert Jupyter nicht: Was soll es mit dieser (zufälligen) Binärdatei machen?

Jupyter kann z.B. öffnen Notebook-Dateien. Es wird wahrscheinlich auch Klartextdateien oder sogar Bilddateien öffnen, weil sie sie entweder als Text lesen oder die Handhabung der Datei (Bilder) an den Filebrowser übergeben. Jupyter hat keine Ahnung, was mit Ihrer Binärdatei zu tun ist: Es ist keine bekannte Spezifikation. Wenn Sie stattdessen die Binärdaten in Python verwenden möchten, lesen Sie die Datei in Python. In der Tat zeigt Ihr Codebeispiel bereits, dass Sie das tun, daher bin ich mir nicht sicher, warum Sie auch versuchen, Ihre Binärdatei innerhalb von Jupyter (oder Notepad) zu öffnen. Beachten Sie, dass der Editor das Beste aus Ihrer Binärdatei herausholt , und zeigt die ASCII - Werte für 0 bis 255 auf Ihrem System, so weit wie möglich.Deshalb sehen Sie Bereiche von bekannten Zeichen.Es zeigt Ihnen nicht die Ganzzahlen von 0 bis 255, sondern nimmt einige Codierung und übersetzt diese Werte in Zeichen, nach dieser Codierung. Wahrscheinlich nicht ASCII, aber einige Windows ASCII-ähnliche Codierung).

+0

Sie haben Recht, mein Codeblock wirft keinen Fehler, wenn er in der Jupyter-Konsole ausgeführt wird. Also meinst du, dass eine Binärdatei in Python gelesen werden soll (zum Beispiel mit .read()), aber hat es keinen Sinn, sie zu öffnen und direkt zu sehen? In Python, wenn ich das mit 'open' ('bfile', 'rb') als fin lief: bdata = fin.read() print (bdata) ', kann ich das Ergebnis (Bytes Objekt) sehen, aber warum ist das Ergebnis nicht in der Textdatei (Binärdatei) geschrieben? – Nicholas

+0

Was erwartet Jupyter beim Öffnen der Binärdatei? Jupyter erwartet Python-Code (z. B. eine Notebook-Datei). – Evert

Verwandte Themen