Comment lire un fichier octet par octet en Python et comment faire pour imprimer un bytelist comme un binaire?
J'essaie de lire un fichier octet par octet, mais je ne suis pas sûr de la façon de le faire. Je suis en train de le faire comme ça:
file = open(filename, 'rb')
while 1:
byte = file.read(8)
# Do something...
N'a donc que faire de la variable d'octets pour contenir les 8 prochaines bits au début de chaque boucle? Il n'a pas d'importance ce que ces octets sont vraiment. La seule chose qui compte, c'est que j'ai besoin de lire un fichier en 8-bits des piles.
EDIT:
Aussi je collectionne ces octets dans une liste et je voudrais l'imprimer afin de ne pas imprimer des caractères ASCII, mais que les matières premières octets, c'est à dire quand j'ai l'impression que bytelist il donne le résultat sous
['10010101', '00011100', .... ]
- Utilisation
while True:
au lieu dewhile 1:
. - Cette question est très similaire à stackoverflow.com/questions/1035340/....
Vous devez vous connecter pour publier un commentaire.
Pour répondre à la deuxième partie de votre question, à convertir en binaire, vous pouvez utiliser un chaîne de format et la
ord
fonction:Noter que le format des plaquettes avec le bon nombre de zéros, ce qui semble être votre exigence. Cette méthode nécessite Python 2.6 ou version ultérieure.
Pour lire un octet:
8 bits d'un octet.
Le code que vous avez montré qui va lire 8 octets. Vous pouvez utiliser
Il y a un module python spécialement conçue pour la lecture et l'écriture et à partir des données encodées appelé"struct'.
Depuis les versions de Python sous 2.6 ne prend pas en charge str.format, un méthode personnalisée doit être utilisé pour créer des binaires formaté chaînes.
ord(f.read(1))
au lieu destruct.unpack('B', f.read(1))[0]
? (Vous auriez besoin de faire quelque chose commec = f.read(1); if not c: break; binlist.append(bstr(ord(c)))
.)La fin de la partie, mais cela peut aider ceux qui cherchent une solution rapide:
vous pouvez utiliser
bin(ord('b')).replace('b', '')
bin() il vous donne la représentation binaire avec un " b " après le dernier bit, vous devez le supprimer. Aussi ord() vous donne le numéro d'ASCII pour le char ou 8 bits 1 Octet de caractères codés.Acclamations