Hur man läser binära filer i Python

How Read Binary Files Python



Filen som innehåller binära data kallas en binär fil. Alla formaterade eller oformaterade binära data lagras i en binär fil, och den här filen är inte läsbar för människor och används direkt av datorn. När en binär fil krävs för att läsa eller överföra från en plats till en annan plats, konverteras eller kodas filens innehåll till ett format som kan läsas av människor. Tillägget av den binära filen är .bin. Innehållet i den binära filen kan läsas med hjälp av en inbyggd funktion eller modul. Olika sätt att läsa binära filer i Python har visats i denna handledning.

Nödvändig förutsättning:

Innan du kontrollerar exemplen på denna handledning är det bättre att skapa en eller flera binära filer som ska användas i exempelskriptet. Skriptet för två pythonfiler har gett nedan för att skapa två binära filer. Binary1.py skapar en binär fil med namnet string.bin som innehåller strängdata och binary2.py skapar en binär fil med namnet number_list.bin som innehåller en lista med numerisk data.







Binary1.py

# Öppna en filhanterare för att skapa en binär fil

file_handler= öppen('string.bin', 'wb')

# Lägg till två rader text i den binära filen

file_handler.skriva(b'Välkommen till LinuxHint. nLär dig Python -programmering. ')

# Stäng filhanteraren

file_handler.stänga()

Binary2.py

# Öppna en filhanterare för att skapa en binär fil

fil=öppen('number_list.bin','wb')

# Deklarera en lista med numeriska värden

tal=[10,30,Fyra fem,60,70,85,99]

# Konvertera listan till array

barray=bytearray(tal)

# Skriv matris i filen

fil.skriva(barray)

fil.stänga()

Exempel-1: Läs den binära filen med strängdata i byte-arrayen

Det finns många sätt i Python att läsa den binära filen. Du kan läsa det specifika antalet byte eller hela innehållet i den binära filen åt gången. Skapa en pythonfil med följande skript. De open () -funktion har använts för att öppna string.bin för läsning. De read () -funktion har använts för att läsa 7 tecken från filen i varje iteration av medan loop och utskrift. Därefter, read () -funktion har använts utan argument för att läsa hela innehållet i den binära filen som kommer att skrivas ut senare.



# Öppna den binära filen för läsning

file_handler= öppen('string.bin', 'rb')

# Läs de tre första byten från den binära filen

data_byte=file_handler.läsa(7)

skriva ut('Skriv ut tre tecken i varje iteration:')

# Iterera öglan för att läsa den återstående delen av filen

medandata_byte:

skriva ut(data_byte)

data_byte=file_handler.läsa(7)


# Läs hela filen som en enda byte -sträng

med öppen('string.bin', 'rb') somfh:

innehåll=fh.läsa()

skriva ut('Skriv ut hela innehållet i den binära filen:')

skriva ut(innehåll)

Produktion:

Följande utdata visas efter att ovanstående skript har körts.







Exempel-2: Läs den binära filen med strängdata i matrisen

Skapa en pythonfil med följande skript för att läsa en binär fil med namnet number_list.bin skapat tidigare. Denna binära fil innehåller en lista med numeriska data. Liksom föregående exempel, open () -funktion har använt öppna den binära filen för att läsa i skriptet. Därefter kommer de första 5 siffrorna att läsas från den binära filen och konverteras till en lista innan de skrivs ut.

# Öppna den binära filen för läsning

fil = öppen('number_list.bin', 'rb')

# Läs in de fem första siffrorna i en lista

siffra= lista(fil.läsa(5))

# Skriv ut listan

skriva ut(siffra)

# Stäng filen

fil.stänga()

Produktion:

Följande utdata visas efter att ovanstående skript har körts. Den binära filen innehåller 7 nummer, och de första fem siffrorna har skrivits ut i utmatningen.



Exempel 3: Läs binär fil med NumPy

Sätten att skapa den binära filen med NumPy -array och läs innehållet i den binära filen med en lista genom att använda NumPy -modul har visat i denna del av handledningen. Innan du kontrollerar skriptet nedan måste du installera NumPy -modul genom att utföra kommandot från terminalen eller installera NumPy -paket i Python -redigeraren, där manuset kommer att köras. De funktionen tofile () används för att skapa en text- eller binärfil, och fromfile () -funktion används för att skapa en matris genom att läsa en text- eller binärfil.

Syntax för tofile ():

ndarray.tofile(fil,Sep='',formatera='%s')

Det första argumentet är obligatoriskt och tar filnamnet eller strängen eller sökvägen som ett värde. Filen skapas om ett filnamn finns i detta argument. Det andra argumentet är valfritt som används för att separera arrayelementen. Det tredje argumentet är också valfritt och används för formatering av textfilens utdata.

Syntax för fomfile ():

numpy.från fil(fil,dtype=flyta,räkna=-1,Sep='',offset=0,*,tycka om=Ingen)

Det första argumentet är obligatoriskt och tar filnamnet eller strängen eller sökvägen som ett värde. Filens innehåll kommer att läsas om ett filnamn tillhandahålls i detta argument. De dtype definierar datatypen för den returnerade matrisen. Räkningen används för att räkna antalet objekt. Syftet med Sep är att separera texten eller matrisobjekten. Förskjutningen används för att definiera filens aktuella position. Det sista argumentet används för att skapa ett arrayobjekt som inte a NumPy -array .

Skapa en pythonfil med följande skript för att skapa en binär fil med NumPy -array och läs och skriv ut innehållet i den binära filen.

# Importera NumPy -modul

importeranumpysomt.ex

# Deklarera numpy array

nparray=t.ex.array([3. 4, 89, 30, Fyra fem, 90, elva])

# Skapa binär fil från numpy array

nparray.tofile('list.bin')

# Skriv ut data från den binära filen

skriva ut(t.ex.från fil('list.bin',dtype=t.ex.int64))

Produktion:

Följande utdata visas efter att ovanstående skript har körts.

Slutsats:

Tre olika sätt att läsa den binära filen har visats i denna handledning med hjälp av enkla exempel. Det första exemplet returnerade innehållet i den binära filen som en byte -array. Det andra exemplet returnerade innehållet i den binära filen som en lista. Det sista exemplet returnerade också innehållet i den binära filen som en lista.