logo

Binaire bestanden lezen in Python

Binaire bestanden lezen is een belangrijke vaardigheid voor het werken met gegevens (niet-tekstueel), zoals afbeeldingen, audio en video's. Met behulp van de bestandsmodus en de lezen Met deze methode kunt u eenvoudig binaire bestanden lezen. Python heeft de mogelijkheid om met de gegevens om te gaan en toestemming biedt verschillende hulp bij bepaalde criteria. Of je er nu mee te maken hebt multimediabestanden, gecomprimeerde gegevens of een aangepast binair formaat s stelt het vermogen van Python om met binaire gegevens om te gaan u in staat krachtige en veelzijdige toepassingen te creëren voor een breed scala aan gebruiksscenario's. In dit artikel leer je het Wat binaire bestanden zijn En Hoe gegevens in een byte-array te lezen , En Binaire gegevens in stukjes lezen? enzovoort.

Wat zijn binaire bestanden?

Over het algemeen betekent binair twee. In de informatica worden binaire bestanden opgeslagen in een binair formaat met cijfers 0-en En 1-en . Bijvoorbeeld, het getal 9 in binair formaat wordt weergegeven als ‘1001’ . Op deze manier slaat onze computer elk bestand op in een machinaal leesbaar formaat in een reeks binaire cijfers. De structuur en het formaat van binaire bestanden zijn afhankelijk van het type bestand. Beeldbestanden hebben verschillende structuren in vergelijking met audiobestanden. Het decoderen van binaire bestanden is echter afhankelijk van de complexiteit van het bestandsformaat. Laten we in dit artikel het lezen van binaire bestanden begrijpen.

Python leest een binair bestand

Om een ​​binair bestand te lezen,



Stap 1: Open het binaire bestand in binaire modus

Om een ​​binair bestand in Python te lezen, moeten we het eerst in binaire modus (‘rb‘) openen. We kunnen de functie ‘open()’ gebruiken om dit te bereiken.

Stap 2: Maak een binair bestand

Om een ​​binair bestand in Python te maken, moet u het bestand openen in de binaire schrijfmodus ( wb ). Raadpleeg dit artikel voor meer informatie.

Python – Schrijf bytes naar bestand

Stap 3: Lees de binaire gegevens

Nadat we het binaire bestand in de binaire modus hebben geopend, kunnen we de methode read() gebruiken om de inhoud ervan in een variabele te lezen. De read()-methode retourneert een reeks bytes, die de binaire gegevens vertegenwoordigt.

Stap 4: Verwerk de binaire gegevens

Zodra we de binaire gegevens in een variabele hebben ingelezen, kunnen we deze volgens onze specifieke vereisten verwerken. Het verwerken van de binaire gegevens kan verschillende taken met zich meebrengen, zoals het decoderen van binaire gegevens, het analyseren van de inhoud of het schrijven van de gegevens naar een ander binair bestand.

Stap 5: Sluit het bestand

Na het lezen en verwerken van de binaire gegevens is het essentieel om het bestand te sluiten met behulp van de close()-methode om systeembronnen vrij te maken en mogelijke problemen met bestandstoegang te voorkomen.

Python3




# Opening the binary file in binary mode as rb(read binary)> f>=> open>(>'files.zip'>, mode>=>'rb'>)> # Reading file data with read() method> data>=> f.read()> # Knowing the Type of our data> print>(>type>(data))> # Printing our byte sequenced data> print>(data)> # Closing the opened file> f.close()>

>

>

Uitgang:

In de uitvoer zien we een reeks bytegegevens, aangezien bytes de fundamentele eenheid van binaire representatie zijn.

b'PKx03x04x14x00x00x00x08x00UxbdxebVxc2=jx87x1ex00x00x00!x00x00x00 x00x00 x00TODO11.txtxe3xe5JN,xceH-/xe6xe5x82xc0xccxbcx92xd4x9cx9cxccx82xc4xc4x12^.w7wx00PKx01 x02x14x00x14x00x00x00x08x00UxbdxebVxc2=jx87x1ex00x00x00!x00x00x00 x00x00 x00x00x00x00x00x01x00 x00x00x00x00x00x00x00TODO11.txtPKx05x06x00x00x00x00x01x00x01x008 x00x00x00Fx00x00x00x00x00′

Binaire gegevens in een byte-array lezen

Deze gegeven code demonstreert hoe binaire gegevens uit een bestand in een byte-array kunnen worden gelezen en vervolgens om binaire gegevens in een binaire array te lezen, de gegevens worden afgedrukt met behulp van een while-lus. Laten we de code stap voor stap uitleggen:

Open het binaire bestand

Deze regel opent het binaire bestand met de naam string.bin in binaire modus (‘rb‘). Het bestand wordt geopend om te lezen en het bestandsobject wordt opgeslagen in de variabele ‘bestand’.

Python3




# Open the binary file> file> => open>(>'string.bin'>,>'rb'>)>

>

>

Het lezen van de eerste drie bytes

Deze regel leest de eerste drie bytes uit het binaire bestand en slaat deze op in de variabele gegevens. De read(3)-methode bytes uit het bestand en verplaatst de aanwijzer dienovereenkomstig.

Python3




data>=> file>.read(>3>)>

>

>

Gegevens afdrukken met behulp van een while-lus

De lus blijft drie bytes tegelijk lezen en afdrukken totdat het einde van het bestand is bereikt. Zodra het einde van het bestand is bereikt, retourneert de methode read() een leeg bytesobject, dat evalueert naar False in de while-lusvoorwaarde, en de lus wordt beëindigd.

Python3




while> data:> >print>(data)> >data>=> file>.read(>3>)>

c++ int naar tekenreeks
>

>

Sluit het binaire bestand

Tenslotte, nadat de lus klaar is met het lezen en afdrukken van de gegevens, sluiten we het binaire bestand met behulp van de ‘close()’-methode om systeembronnen vrij te geven.

Python3




file>.close()>

>

>

Door nu de bovenstaande stappen in één te gebruiken, krijgen we dit:

De code-uitvoer is afhankelijk van de inhoud van het string.bin binair bestand. De code leest en drukt de gegevens af in stukjes van drie bytes tegelijk totdat het einde van het bestand is bereikt. Elke iteratie van de lus zal de drie bytes afdrukken die uit het bestand zijn gelezen.

Python




# Open the binary file> file> => open>(>'string.bin'>,>'rb'>)> # Reading the first three bytes from the binary file> data>=> file>.read(>3>)> # Printing data by iterating with while loop> while> data:> >print>(data)> >data>=> file>.read(>3>)> # Close the binary file> file>.close()>

>

>

Als de inhoud van string.bin bijvoorbeeld b’GeeksForGeeks’ is (een reeks van zes bytes), is de uitvoer:

Uitgang:

b 'Gee' b ' ksf' b 'org' b 'eek' b 's'>

Lees binaire bestanden in chunks

Om binaire bestandsgegevens in stukjes te lezen, gebruiken we een while-lus om de binaire gegevens uit het bestand te lezen in stukjes van de opgegeven grootte (chunk_size). De lus gaat door totdat het einde van het bestand is bereikt, en elk stuk gegevens wordt dienovereenkomstig verwerkt.

Hierin wordt chunk_size=1024 gebruikt om de grootte van elk chunk te specificeren om het binaire bestand te lezen. file = open(binary_file.bin, rb): Deze regel opent het binaire bestand met de naam binary_file.bin in binaire modus (rb). terwijl True wordt gebruikt om een ​​oneindige lus op te zetten die het bestand in stukjes blijft lezen totdat het einde van het bestand is bereikt. stuk = bestand. read(chunk_size) bevindt zich in de lus en de read(chunk_size) methode wordt gebruikt om een ​​deel van de binaire gegevens uit het bestand te lezen.

Python3




# Specify the size of each chunk to read> chunk_size>=> 10> file> => open>(>'binary_file.bin'>,>'rb'>)> # Using while loop to iterate the file data> while> True>:> >chunk>=> file>.read(chunk_size)> >if> not> chunk:> >break> ># Processing the chunk of binary data> >print>(f>'Read {len(chunk)} bytes: {chunk}'>)>

>

>

De uitvoer van de code is afhankelijk van de inhoud van het binaire bestand binary_file.bin en de opgegeven chunk_size. Als het bestand bijvoorbeeld de binaire gegevens bevat b Hallo, dit zijn binaire gegevens!', en de chunk_size is ingesteld op 10, de uitvoer zal zijn:

Uitgang:

Read 10 bytes: b'Hello, thi' Read 10 bytes: b's is binar' Read 7 bytes: b'y data!'>

De uitvoer varieert afhankelijk van de binaire bestandsgegevens die we lezen en ook van de chunkgrootte die we specificeren.

Lees binaire bestandsgegevens in array

Om een ​​binair bestand in een array.bin te lezen en de wb-modus te gebruiken om een ​​bepaald binair bestand te schrijven. De array is de naam van het bestand. toegewezen array als num=[3,6,9,12,18] om de array in byte-indeling te krijgen. gebruik bytearray().

Om een ​​array naar het bestand te schrijven gebruiken we:

Python3




file>=>open>(>'array'>,>'wb'>)> num>=>[>3>,>6>,>9>,>12>,>18>]> array>=>bytearray(num)> file>.write(array)> file>.close()>

>

>

Om de geschreven array uit het gegeven bestand te lezen, hebben we hetzelfde bestand gebruikt, d.w.z. file=open(array, rb). rb gebruikte om de array uit het bestand te lezen. De list() wordt gebruikt om een ​​lijstobject te maken. nummer=lijst(bestand. lees(3)). Om de bytes uit het bestand te lezen. lees() wordt gebruikt.

Python3




file>=>open>(>'array'>,>'rb'>)> number>=>list>(>file>.read(>3>))> print> (number)> file>.close()>

>

>

Uitgang:

[3,6,9]>

Lees binaire bestanden in Python met NumPy

Om een ​​binair bestand in een NumPy-array te lezen, importeert u module NumPy. Het dtype is np.unit8, wat staat voor een geheel getal van 8 bits zonder teken. Dit betekent dat elk item in de array een geheel getal van 8 bits (1 byte) is, met waarden die kunnen variëren van 0 tot 255.

Python3




import> numpy as np> # Open the file in binary mode> with>open>(>'myfile.bin'>,>'rb'>) as f:> ># Read the data into a NumPy array> >array>=> np.fromfile(f, dtype>=>np.uint8)># Change dtype according to your data>

>

selectie sorteren
>

Vergeet niet om uw bestand te wijzigen in uw binaire bestanden

Uitvoer :

array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=np.uint8)>

Gerelateerd artikel

Python | Converteer tekenreeks naar bytes

Python-array

Lees een bestand regel voor regel in Python

Een tekstbestand lezen en schrijven in Python