2017-11-28 7 views
0

Vor ungefähr einem Jahr bemerkte ich, dass, als ich versuchte, meine Python-Notizbücher zu öffnen, die ich auf einem Universitätsserver gespeichert hatte, einen Fehler "Notebook scheint nicht JSON zu sein" bekam. Zuerst war ich schockiert und bestürzt, dass all meine harte Arbeit für immer weg war, aber als ich die Akte in Emacs inspizierte, sah ich, dass alles da war, außer dass das Ende des Lebens eine lange Liste von^@ Symbolen enthielt, die die JSON-Interpreter (Beispiel unten).Warum fügt jupyter Notebook eine lange Liste von^@ Symbolen am Ende der ipynb Datei an?

enter image description here

einfach diese^@ Symbole Löschen wiederhergestellt die Datei. Seitdem ich jedes Mal, wenn ich diesen JSON-Fehler bekomme (was ziemlich oft ist), öffne ich einfach Emacs und lösche die Symbole, aber es wird nervig.

Kann mir jemand erklären, warum das passiert und kann es verhindert werden? Soweit ich das beurteilen kann, passiert dies nur, wenn ich mit ipynb-Dateien von einem Server arbeite, mit dem mein persönlicher Laptop (MacBook Pro OS X 10.12.6) über smb verbunden ist. Es passiert nie, wenn die ipynb-Dateien lokal gespeichert werden. Ich bevorzuge es, vom Server zu arbeiten, weil alles automatisch gesichert wird und ich manchmal verschiedene Computer verwende, so dass ich immer Zugriff auf meine Dateien habe.

Antwort

1

Die Datei ist beschädigt. Die ^@ bedeutet das ASCII NUL Byte. Was einfach passiert ist, dass die Datei um auf etwas größere Größe erweitert wurde; Die Metadaten wurden auf den Datenträger geschrieben, aber der eigentliche Inhalt blieb im Cache, wenn der Computer (versehentlich) heruntergefahren wurde oder das Betriebssystem abstürzte oder das USB-Laufwerk entfernt wurde.

I.e. in Ihrem Fall haben Sie wahrscheinlich tat verlieren Sie Ihre neueste Bearbeitung in diese Datei.

+0

Ich weiß, dass die Datei beschädigt ist, und ich weiß, wie man es behebt (löschen Sie einfach alle^@). Es wurde kein Absturz oder USB-Laufwerk entfernt und ich verliere keine Daten, wenn dies passiert. Ich speichere einfach meine ganze Arbeit, schließe jupyter Notebook, schließe dann die Serververbindung. Wenn ich mich wieder mit dem Server verbinde und meine Dateien öffne, haben sie manchmal die^@ Symbole, und manchmal nicht! Also meine Frage ist, wie verhindere ich das? – Bow

+0

Sie schließen die Verbindung abrupt. Vielleicht leeren Sie die Dateisystem-Caches, bevor Sie die Verbindung schließen! –

+0

Danke für die Einsicht! – Bow

Verwandte Themen