logo

Läser binära filer i Python

Läser binära filer är en viktig färdighet för att arbeta med data (icke-textuell) som bilder, ljud och videor. Använda filläge och läsa metod kan du enkelt läsa binära filer. Pytonorm har möjlighet att hantera uppgifterna och samtycke ger olika hjälp med vissa kriterier. Oavsett om du har att göra med multimediafiler, komprimerad data eller anpassat binärt format s, Pythons förmåga att hantera binär data ger dig möjlighet att skapa kraftfulla och mångsidiga applikationer för ett brett spektrum av användningsfall. I den här artikeln kommer du att lära dig Vad är binära filer och hur man läser data i en byte-array , och Läsa binära data i bitar? och så vidare.

Vad är binära filer?

Generellt betyder binär två. Inom datavetenskap lagras binära filer i ett binärt format med siffror 0:or och 1:or . Till exempel, siffran 9 i binärt format representeras som '1001' . På så sätt lagrar vår dator varje fil i ett maskinläsbart format i en sekvens av binära siffror. Strukturen och formatet för binära filer beror på typen av fil. Bildfiler har olika struktur jämfört med ljudfiler. Avkodning av binära filer beror dock på hur komplext filformatet är. Låt oss i den här artikeln förstå läsningen av binära filer.



Python Läs en binär fil

För att läsa en binär fil,

Steg 1: Öppna den binära filen i binärt läge

För att läsa en binär fil i Python måste vi först öppna den i binärt läge ('rb'). Vi kan använda funktionen 'open()' för att uppnå detta.



Steg 2: Skapa en binär fil

För att skapa en binär fil i Python måste du öppna filen i binärt skrivläge ( wb ). För mer se den här artikeln.

10 av 40

Python – Skriv byte till fil



Steg 3: Läs binära data

Efter att ha öppnat den binära filen i binärt läge kan vi använda metoden read() för att läsa dess innehåll till en variabel. Metoden read() returnerar en sekvens av byte, som representerar binära data.

Steg 4: Bearbeta binära data

När vi har läst in binära data till en variabel kan vi bearbeta den enligt våra specifika krav. Bearbetning av binär data kan involvera olika uppgifter som att avkoda binär data, analysera innehållet eller skriva data till en annan binär fil.

Steg 5: Stäng filen

Efter att ha läst och bearbetat binära data är det viktigt att stänga filen med metoden close() för att frigöra systemresurser och undvika potentiella problem med filåtkomst.

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()>

>

>

Produktion:

I utgången ser vi en sekvens av bytedata eftersom byte är den grundläggande enheten för binär representation.

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

Läser binär data till en byte-array

Den här givna koden demonstrerar hur man läser binär data från en fil till en byte-array och sedan för att läsa binär data till en binär array skriv ut data med en while-loop. Låt oss förklara koden steg för steg:

Öppna den binära filen

Denna rad öppnar den binära filen med namnet string.bin i binärt läge ('rb'). Filen öppnas för läsning och filobjektet lagras i variabeln 'fil'.

Python3




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

>

>

Läser de tre första byten

Denna rad läser de första tre byten från den binära filen och lagrar dem i variabeldata. Read(3)-metoden bytes från filen och flyttar fram pekaren därefter.

Python3




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

>

>

Skriv ut data med en while-loop

Slingan kommer att fortsätta läsa och skriva ut tre byte åt gången tills slutet av filen nås. När slutet av filen har nåtts kommer metoden read() att returnera ett tomt bytesobjekt, som utvärderas till False i while-looptillståndet, och loopen avslutas.

Python3




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

>

>

Stäng den binära filen

Slutligen, efter att slingan har läst och skrivit ut data, stänger vi den binära filen med metoden 'close()' för att frigöra systemresurser.

Python3




file>.close()>

>

>

Nu genom att använda ovanstående steg i ett, kommer vi att få detta:

Kodutgången kommer att bero på innehållet i string.bin binär fil. Koden läser och skriver ut data i bitar om tre byte åt gången tills slutet av filen nås. Varje iteration av slingan kommer att skriva ut de tre byte som läses från filen.

Pytonorm




# 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()>

hur man konverterar int till sträng java

>

>

Till exempel, om innehållet i string.bin är b’GeeksForGeeks’ (en sekvens på sex byte), blir utdata:

Produktion:

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

Läs binära filer i bitar

För att läsa binär fildata i bitar använder vi en while-loop för att läsa binär data från filen i bitar av angiven storlek (chunk_size). Slingan fortsätter tills slutet av filen nås, och varje bit data bearbetas därefter.

I detta används chunk_size=1024 för att specificera storleken på varje chunk för att läsa den binära filen. fil = öppen(binär_fil.bin, rb): Denna rad öppnar den binära filen med namnet binär_fil.bin i binärt läge (rb). medan True används för att skapa en oändlig loop som kommer att fortsätta läsa filen i bitar tills slutet av filen nås. chunk = fil. read(chunk_size) är Inside the loop, och read(chunk_size)-metoden används för att läsa en bit binär data från filen.

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}'>)>

>

>

Utdata från koden kommer att bero på innehållet i den binära filen binary_file.bin och den angivna chunk_size. Till exempel, om filen innehåller binär data b Hej, detta är binär data!', och chunk_size är satt till 10, utgången blir:

Utgång:

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

Utdata varierar beroende på de binära fildata vi läser och även på den bitstorlek vi anger.

Läs binära fildata till Array

Att läsa en binär fil till en array.bin och använda wb-läget för att skriva en given binär fil. Arrayen är namnet på filen. tilldelas array som num=[3,6,9,12,18] för att få arrayen i byteformat. använd byte array().

För att skriva en array till filen använder vi:

Python3




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

>

>

För att läsa den skrivna arrayen från den givna filen har vi använt samma fil, dvs file=open(array, rb). rb används för att läsa arrayen från filen. List() används för att skapa ett listobjekt. nummer=lista(fil. läs(3)). För att läsa byte från filen. read() används.

Python3




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

>

>

Produktion:

[3,6,9]>

Läs binära filer i Python med NumPy

För att läsa en binär fil till en NumPy-array, importera modulen NumPy. Dtypen är np.unit8 som står för unsigned 8-bit integer. Detta betyder att varje objekt i arrayen är ett 8-bitars (1 byte) heltal, med värden som kan variera från 0 till 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>

>

>

Kom ihåg att ändra din fil till dina binära filer

Produktion :

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

Relaterad artikel

Python | Konvertera sträng till byte

Python Array

Läs en fil rad för rad i Python

Läsa och skriva en textfil i Python