Hoe binaire bestanden in Python te lezen

How Read Binary Files Python



Het bestand dat de binaire gegevens bevat, wordt een binair bestand genoemd. Alle geformatteerde of niet-geformatteerde binaire gegevens worden opgeslagen in een binair bestand en dit bestand is niet door mensen leesbaar en wordt rechtstreeks door de computer gebruikt. Wanneer een binair bestand moet worden gelezen of overgedragen van de ene naar de andere locatie, wordt de inhoud van het bestand geconverteerd of gecodeerd in een door mensen leesbaar formaat. De extensie van het binaire bestand is .bin. De inhoud van het binaire bestand kan worden gelezen met behulp van een ingebouwde functie of module. In deze tutorial zijn verschillende manieren getoond om binaire bestanden in Python te lezen.

Voorwaarde:

Voordat u de voorbeelden van deze zelfstudie bekijkt, is het beter om een ​​of meer binaire bestanden te maken om in het voorbeeldscript te gebruiken. Het script van twee python-bestanden heeft hieronder gegeven om twee binaire bestanden te maken. De binary1.py zal een binair bestand maken met de naam string.bin dat stringgegevens zal bevatten, en de binary2.py zal een binair bestand maken met de naam nummer_lijst.bin die een lijst met numerieke gegevens zal bevatten.







Binair1.py

# Open een bestandshandler om een ​​binair bestand te maken

file_handler= open('string.bin', 'wb')

# Voeg twee regels tekst toe aan het binaire bestand

file_handler.schrijven(B'Welkom bij LinuxHint.NLeer Python programmeren.')

# Sluit de bestandshandler

file_handler.dichtbij()

Binair2.py

# Open een bestandshandler om een ​​binair bestand te maken

het dossier=open('nummer_lijst.bin','wb')

# Declareer een lijst met numerieke waarden

nummers=[10,30,Vier vijf,60,70,85,99]

# Converteer de lijst naar array

barray=bytearray(nummers)

# Schrijf array in het bestand

het dossier.schrijven(barray)

het dossier.dichtbij()

Voorbeeld-1: Lees het binaire bestand met stringgegevens in de bytearray

Er zijn veel manieren in Python om het binaire bestand te lezen. U kunt het specifieke aantal bytes of de volledige inhoud van het binaire bestand tegelijk lezen. Maak een python-bestand met het volgende script. De open() functie heeft gebruikt om de . te openen string.bin voor lezen. De lees() functie is gebruikt om 7 tekens uit het bestand te lezen in elke iteratie van while-lus en print. Volgende, de lees() functie is zonder enig argument gebruikt om de volledige inhoud van het binaire bestand dat later wordt afgedrukt, te lezen.



# Open het binaire bestand om te lezen

file_handler= open('string.bin', 'rb')

# Lees de eerste drie bytes van het binaire bestand

data_byte=file_handler.lezen(7)

afdrukken('Druk drie tekens af in elke iteratie:')

# Herhaal de lus om het resterende deel van het bestand te lezen

terwijldata_byte:

afdrukken(data_byte)

data_byte=file_handler.lezen(7)


# Lees het hele bestand als een enkele byte string

met open('string.bin', 'rb') alsvh:

inhoud=vr.lezen()

afdrukken('Druk de volledige inhoud van het binaire bestand af:')

afdrukken(inhoud)

Uitgang:

De volgende uitvoer zal verschijnen na het uitvoeren van het bovenstaande script.







Voorbeeld-2: Lees het binaire bestand met stringgegevens in de array

Maak een python-bestand met het volgende script om een ​​binair bestand met de naam te lezen nummer_lijst.bin eerder gemaakt. Dit binaire bestand bevat een lijst met numerieke gegevens. Net als het vorige voorbeeld, de open() functie heeft open het binaire bestand gebruikt om in het script te lezen. Vervolgens worden de eerste 5 cijfers uit het binaire bestand gelezen en omgezet in een lijst voordat ze worden afgedrukt.

# Open het binaire bestand om te lezen

het dossier = open('nummer_lijst.bin', 'rb')

# Lees de eerste vijf nummers in een lijst

nummer= lijst(het dossier.lezen(5))

# Print de lijst

afdrukken(nummer)

# Sluit het bestand

het dossier.dichtbij()

Uitgang:

De volgende uitvoer zal verschijnen na het uitvoeren van het bovenstaande script. Het binaire bestand bevat 7 getallen en de eerste vijf getallen zijn afgedrukt in de uitvoer.



Voorbeeld-3: binair bestand lezen met NumPy

De manieren om het binaire bestand te maken met behulp van de NumPy-array en lees de inhoud van het binaire bestand met in een lijst met behulp van de NumPy-module hebben laten zien in dit deel van de tutorial. Voordat u het onderstaande script controleert, moet u de NumPy-module door het commando uit te voeren vanaf de terminal of door de te installeren NumPy-pakket in de Python-editor, waar het script wordt uitgevoerd. De tofile() functie wordt gebruikt om een ​​tekst- of binair bestand te maken, en de fromfile() functie wordt gebruikt om een ​​array te maken door een tekst- of binair bestand te lezen.

Syntaxis van tofile():

ndarray.tofile(het dossier,september='',formaat='%s')

Het eerste argument is verplicht en heeft de bestandsnaam of tekenreeks of pad als waarde. Het bestand wordt aangemaakt als in dit argument een bestandsnaam wordt opgegeven. Het tweede argument is optioneel en wordt gebruikt om de array-elementen te scheiden. Het derde argument is ook optioneel en wordt gebruikt voor het formatteren van de uitvoer van het tekstbestand.

Syntaxis van formfile():

numpig.van bestand(het dossier,dtype=vlot,Graaf=-1,september='',offset=0,*,Leuk vinden=Geen)

Het eerste argument is verplicht en heeft de bestandsnaam of tekenreeks of pad als waarde. De inhoud van het bestand wordt gelezen als een bestandsnaam in dit argument wordt opgegeven. De dtype definieert het gegevenstype van de geretourneerde array. De telling wordt gebruikt om het aantal items te tellen. Het doel van de september is om de tekst of array-items te scheiden. De offset wordt gebruikt om de huidige positie van het bestand te definiëren. Het laatste argument wordt gebruikt om een ​​array-object te maken dat niet a NumPy-array .

Maak een python-bestand met het volgende script om een ​​binair bestand te maken met NumPy-array en lees en print de inhoud van het binaire bestand.

# NumPy-module importeren

importerennumpyalsbijv

# Numpy array declareren

nparray=bijv.reeks([3. 4, 89, 30, Vier vijf, 90, elf])

# Maak een binair bestand van numpy array

nparray.tofile('lijst.bin')

# Print gegevens uit het binaire bestand

afdrukken(bijv.van bestand('lijst.bin',dtype=bijv.int64))

Uitgang:

De volgende uitvoer zal verschijnen na het uitvoeren van het bovenstaande script.

Conclusie:

In deze zelfstudie zijn drie verschillende manieren getoond om het binaire bestand te lezen aan de hand van eenvoudige voorbeelden. Het eerste voorbeeld retourneerde de inhoud van het binaire bestand als een bytearray. Het tweede voorbeeld retourneerde de inhoud van het binaire bestand als een lijst. Het laatste voorbeeld retourneerde ook de inhoud van het binaire bestand als een lijst.