Probleme beim einlesen einer Datei?!

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Chris82
User
Beiträge: 21
Registriert: Sonntag 13. Juli 2008, 17:06

Hallo,

ich fange gerade an mit Python zu programmieren. Leider habe ich ansonsten auch sehr wenig Programmiererfahrung.
Ich muss mir ein kleines Programm basteln, welches eine Datei einließt und diese in einzelne Abschnitte zerlegt und dann den Inhalt in jeweils extra Dateien speichert. Problem ist nur, ich hänge schon beim einlesen der Datei, was wohl allerdings weniger mit einer falschen Programmierung, als wohl eher mit dem Inhalt zu tun hat.
Öffnet man die Datei in einem Editor sieht alles sehr konfus aus. Sie besteht aus einem Header mit ASCII Zeichen und einem Binärteil, welcher eine Bildinformation enthält. Dieser Bildteil besteht aus vielen unterschiedlichen Zeichen (auf gut Deutsch "Hieroglyphen")

Das einlesen klappt ganz gut bis ich zu einem Zeichen komme
Diesen Pfeil. Ab da ließt mir Python die Datei nicht weiter ins Shell.
"→"

Wie gesagt ich bin gerade am Anfange. Teste nur ob die Datei geladen werden kann, um sie dann in eine neue Datei abzuspeichern. Das Endprogramm wäre dann schon etwas komplizierter, aber bis dahin bin ich noch nicht gekommen.
Was mich sehr stutzig macht ist, dass dieser Pfeil "←" also in umgekehrter Richtung problemlos eingelesen wird.
Ich habe schon ein Freund gefragt, der deutlich mehr Erfahrung mit Python hat als ich, aber auch er war ratlos, warum Python sich weigert genannten Pfeil einzulesen.

Muss hier ggf. ein Zeichensatz geladen werden, aber warum ließt er nur diesen Pfeil nicht ein, weil es kommen sicher einige Symbole aus dem selben Zeichensatz in der Datei vor.
BlackJack

Wenn eine Datei Binärdaten enthält, musst Du sie auch als Binärdatei öffnen. Der "Pfeil" ist nur eine Art den entsprechenden Bytewert in der Datei dar zu stellen. Ich nehme mal an, es ist der Wert, den Windows bei Textdateien als Dateiende interpretiert. Ein Relikt aus CP/M-Zeiten als die Dateigrösse noch nicht in Bytes gemessen wurde, sondern in Diskettenblöcken.
Chris82
User
Beiträge: 21
Registriert: Sonntag 13. Juli 2008, 17:06

Danke für den Tipp. Die Möglichkeit, die Datei als Binärdatei zu öffnen war mir noch nicht bekannt. Eigentlich ja auch nicht nötig, wenn er alles einlesen würde, aber wenn Windows den "Pfeil" als Dateiende interpretiert, wird es dann doch nötig. Auf jeden Fall klappt jetzt alles und ich kann mich an die weitere Programmierung machen.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Es wird alles eingelesen. Öffnet man eine Datei allerdings im Textmodus, so werden die eingelesenen/geschriebenen Daten etwas intelligenter behandelt, um die Platformunabhängigkeit zu erhalten.
BlackJack

Ob eine Behandlung, die unter CP/M mal wichtig war und technisch IMHO ziemlich schrottig ist, als "intelligente Behandlung" bezeichnet werden kann? Also ich weise an der Stelle immer gerne darauf hin, dass Python da unschuldig ist und Windows diesen Blödsinn macht.
Antworten