Lire un fichier binaire en Python
-
Lire un fichier binaire avec la fonction
open()
en Python -
Lire un fichier binaire avec
pathlib.Path
en Python -
Lecture d’un fichier binaire avec la fonction
numpy.fromfile()
en Python
Le programme ou le processeur interne interprète un fichier binaire. Il contient les octets comme contenu. Lorsque nous lisons un fichier binaire, un objet de type bytes
est renvoyé.
Lire un fichier binaire avec la fonction open()
en Python
En Python, nous avons la fonction open()
utilisée pour créer un objet fichier en passant son chemin à la fonction et en ouvrant un fichier dans un mode spécifique, le mode lecture par défaut. Lorsque nous ouvrons des fichiers binaires, nous devons spécifier le paramètre b
lors de l’ouverture de tels fichiers en mode lecture, écriture ou ajout. Dans ce tutoriel, nous traiterons du mode de lecture binaire - rb
.
Dans le code ci-dessous, nous allons lire un fichier binaire et imprimer un caractère du fichier :
with open("sample.bin", "rb") as f:
data = f.read()
print(data[2])
Production :
83
Si nous imprimons des caractères individuels, nous pouvons alors visualiser les entiers.
Python possède un paquet appelé struct
, qui possède de nombreuses méthodes et peut être utilisé pour traiter des données binaires stockées dans des fichiers, des bases de données, et d’autres ressources.
La struct.unpack()
est utilisée pour lire les données empaquetées dans un format spécifique. Ce format, qui est utilisé lors de l’empaquetage et du déballage des données, est spécifié à l’aide de caractères de format. Ces caractères de format, ainsi que leur taille, sont indiqués ci-dessous :
Notez que la fonction struct.unpack()
renvoie toujours un tuple.
import struct
with open("sample.bin", "rb") as f:
data = f.read()
unpack_result = struct.unpack("hhl", data[0:8])
print(unpack_result)
Production :
(1280, 27731, 7037801)
Ici, hhl
indique le format de données court, court et long int, comme on peut le voir dans la sortie. C’est pourquoi la mémoire tampon pour le déballage n’est que de 8 octets puisque la taille du format est de 8(2+2+4).
Lire un fichier binaire avec pathlib.Path
en Python
Nous pouvons également utiliser la méthode read_bytes()
de la classe Path
de la bibliothèque pathlib
pour lire un fichier en mode octets et ensuite interpréter les données en utilisant la fonction struct.unpack()
comme indiqué précédemment :
from pathlib import Path
import struct
data = Path("sample.bin").read_bytes()
multiple = struct.unpack("ii", data[:8])
print(multiple)
Production :
(1817380096, 7037801)
Lecture d’un fichier binaire avec la fonction numpy.fromfile()
en Python
Une autre approche intéressante est fournie dans le module NumPy
. En utilisant la fonction fromfile()
dans ce module, nous pouvons lire les données binaires des fichiers après avoir spécifié le format des données en utilisant la fonction dtype()
. Cette méthode est considérée comme rapide. Le code suivant montre comment l’implémenter :
import numpy as np
with open("sample.bin") as f:
rectype = np.dtype(np.int32)
bdata = np.fromfile(f, dtype=rectype)
print(bdata)
Production :
[1817380096 7037801]
Ici, nous spécifions le type de format comme entier-32 bits et nous extrayons les données en utilisant la fonction fromfile()
.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedInArticle connexe - Python File
- Comment obtenir tous les fichiers d'un répertoire
- Comment ajouter du texte à un fichier en Python
- Comment vérifier si un fichier existe en Python
- Comment trouver des fichiers avec une certaine extension seulement en Python
- Comment lire des lignes spécifiques d'un fichier en Python
- Lire un fichier texte et imprimer son contenu en Python