Sådan læses binære filer i Python

How Read Binary Files Python



Filen, der indeholder de binære data, kaldes en binær fil. Eventuelle formaterede eller uformaterede binære data gemmes i en binær fil, og denne fil er ikke læsbar for mennesker og bruges direkte af computeren. Når en binær fil er påkrævet for at læse eller overføre fra et sted til et andet sted, konverteres eller kodes filens indhold til et format, der kan læses af mennesker. Udvidelsen af ​​den binære fil er .bin. Indholdet af den binære fil kan læses ved hjælp af en indbygget funktion eller et modul. Forskellige måder at læse binære filer i Python er blevet vist i denne vejledning.

Forudsætning:

Inden du ser eksemplerne på denne vejledning, er det bedre at oprette en eller flere binære filer, der skal bruges i eksemplets script. Scriptet med to python -filer har givet nedenfor for at oprette to binære filer. Binary1.py opretter en binær fil med navnet string.bin der vil indeholde strengdata, og binary2.py vil oprette en binær fil med navnet number_list.bin der vil indeholde en liste over numeriske data.







Binær1.py

# Åbn en filhåndterer for at oprette en binær fil

file_handler= åben('string.bin', 'wb')

# Tilføj to tekstlinjer i den binære fil

file_handler.skrive(b'Velkommen til LinuxHint. nLær Python -programmering. ')

# Luk filbehandleren

file_handler.tæt()

Binary2.py

# Åbn en filhåndterer for at oprette en binær fil

fil=åben('number_list.bin','wb')

# Angiv en liste over numeriske værdier

tal=[10,30,Fire. Fem,60,70,85,99]

# Konverter listen til array

barray=bytearray(tal)

# Skriv array i filen

fil.skrive(barray)

fil.tæt()

Eksempel-1: Læs den binære fil med strengdata i byte-arrayet

Der findes mange måder i Python til at læse den binære fil. Du kan læse det særlige antal bytes eller hele binærfilens indhold ad gangen. Opret en python -fil med følgende script. Det open () funktion har brugt til at åbne string.bin til læsning. Det read () funktion er blevet brugt til at læse 7 tegn fra filen i hver iteration af while loop og print. Dernæst read () funktion er blevet brugt uden noget argument til at læse hele indholdet af den binære fil, der udskrives senere.



# Åbn den binære fil til læsning

file_handler= åben('string.bin', 'rb')

# Læs de første tre bytes fra den binære fil

data_byte=file_handler.Læs(7)

Print('Udskriv tre tegn i hver iteration:')

# Iterér sløjfen for at læse den resterende del af filen

mensdata_byte:

Print(data_byte)

data_byte=file_handler.Læs(7)


# Læs hele filen som en enkelt byte -streng

med åben('string.bin', 'rb') somfh:

indhold=fh.Læs()

Print('Udskriv det fulde indhold af den binære fil:')

Print(indhold)

Produktion:

Følgende output vises efter udførelse af ovenstående script.







Eksempel-2: Læs den binære fil med strengdata i arrayet

Opret en python -fil med følgende script for at læse en binær fil med navnet number_list.bin oprettet tidligere. Denne binære fil indeholder en liste over numeriske data. Ligesom det foregående eksempel, open () funktion har brugt åbne den binære fil til læsning i scriptet. Dernæst vil de første 5 tal blive læst fra den binære fil og konverteret til en liste før udskrivning.

# Åbn den binære fil til læsning

fil = åben('number_list.bin', 'rb')

# Læs de første fem tal ind på en liste

nummer= liste(fil.Læs(5))

# Udskriv listen

Print(nummer)

# Luk filen

fil.tæt()

Produktion:

Følgende output vises efter udførelse af ovenstående script. Den binære fil indeholder 7 tal, og de første fem tal er udskrevet i output.



Eksempel-3: Læs binær fil ved hjælp af NumPy

Måderne til at oprette den binære fil ved hjælp af NumPy -array og læs indholdet af den binære fil i en liste ved hjælp af NumPy modul har vist i denne del af selvstudiet. Inden du kontrollerer scriptet nedenfor, skal du installere NumPy modul ved at udføre kommandoen fra terminalen eller installere NumPy -pakke i Python -editoren, hvor scriptet udføres. Det tofile () funktion bruges til at oprette en tekst- eller binærfil, og fromfile () funktion bruges til at oprette et array ved at læse en tekst eller binær fil.

Syntaks for tofile ():

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

Det første argument er obligatorisk og tager filnavnet eller strengen eller stien som en værdi. Filen oprettes, hvis et filnavn er angivet i dette argument. Det andet argument er valgfrit, der bruges til at adskille matrixelementerne. Det tredje argument er også valgfrit og bruges til formatering af tekstfilens output.

Syntaks for fomfile ():

numpy.fra fil(fil,dtype=flyde,tælle=-1,Sep='',forskydning=0,*,synes godt om=Ingen)

Det første argument er obligatorisk og tager filnavnet eller strengen eller stien som en værdi. Filens indhold læses, hvis et filnavn vil blive angivet i dette argument. Det dtype definerer datatypen for det returnerede array. Tællingen bruges til at tælle antallet af varer. Formålet med Sep er at adskille tekst- eller matrixelementer. Offset bruges til at definere filens aktuelle position. Det sidste argument bruges til at oprette et array -objekt, der ikke er et NumPy -array .

Opret en python -fil med følgende script for at oprette en binær fil vha NumPy -array og læs og udskriv indholdet i den binære fil.

# Importer NumPy -modul

importerenumpysomf.eks

# Angiv numpy array

nparray=f.eks.array([3. 4, 89, 30, Fire. Fem, 90, elleve])

# Opret binær fil fra numpy array

nparray.tofile('list.bin')

# Udskriv data fra den binære fil

Print(f.eks.fra fil('list.bin',dtype=f.eks.int64))

Produktion:

Følgende output vises efter udførelse af ovenstående script.

Konklusion:

Tre forskellige måder at læse den binære fil er blevet vist i denne vejledning ved hjælp af enkle eksempler. Det første eksempel returnerede indholdet af den binære fil som et byte -array. Det andet eksempel returnerede indholdet af den binære fil som en liste. Det sidste eksempel returnerede også indholdet af den binære fil som en liste.