Seite 1 von 1

Frage zu Dateien, Bits und Bytes

Verfasst: Samstag 17. September 2005, 17:29
von qweet
Hallo,

ich habe eine 1mb große Datei und würde diese gern byte-weise auslesen.
wie stell ich das an?

Code: Alles auswählen

datei = open('1meg.001', 'r')
datei.read()
gibt bei mir sowas in der Art aus:
'"\xb24\xb8\xdc\...\...\'

Jetzt noch eine letzte Frage zu den Bits. Wie kann ich aus einem Byte die einzelnen Bits auslesen?

das wars auch schon :roll: ;)
mfg, qweet

Verfasst: Samstag 17. September 2005, 17:51
von Leonidas
datei.read(1) ist sehr naheliegend und sollte funktionieren.

Verfasst: Samstag 17. September 2005, 18:26
von rayo
Hi

Also falls es Windows ist vielleicht 'rb' anstatt 'r' nehmen (Binär lesen).

Wegen Bitweise lesen:
http://www.python-forum.de/viewtopic.ph ... highlight=

Gruss Rayo

Re: Frage zu Dateien, Bits und Bytes

Verfasst: Samstag 17. September 2005, 21:05
von BlackJack
qweet hat geschrieben:ich habe eine 1mb große Datei und würde diese gern byte-weise auslesen.
wie stell ich das an?

Code: Alles auswählen

datei = open('1meg.001', 'r')
datei.read()
gibt bei mir sowas in der Art aus:
'"\xb24\xb8\xdc\...\...\'
Damit bekommst Du eine Zeichenkette mit dem gesamten Inhalt der Datei. Mit '\x??' werden Bytes angezeigt, die sich nicht als ASCII anzeigen lassen. Anstelle der beiden Fragezeichen steht eine zweistellige Hexadezimalzahl, die den Wert des Bytes angibt.

Bei Dateien mit nur einem Megabyte kannst Du normalerweise unbesorgt die ganze Datei in den Speicher laden und dann über die einzelnen Zeichen iterieren. Dateien byteweise einlesen ist recht langsam.

Wenn Du die Zeichen als Zahl, also den Byte-Wert benötigst, dann musst Du die Zeichen mit der `ord()` Funktion umwandeln:

Code: Alles auswählen

from itertools import imap

datei = open('1meg.001', 'rb')
data = datei.read()
datei.close()

for byte in imap(ord, data):
    print byte