Hvordan lese binære filer i Python

How Read Binary Files Python



Filen som inneholder binære data kalles en binær fil. Eventuelle formaterte eller uformaterte binære data lagres i en binær fil, og denne filen er ikke lesbar for mennesker og brukes av datamaskinen direkte. Når en binær fil er nødvendig for å lese eller overføre fra et sted til et annet sted, blir filens innhold konvertert eller kodet til et lesbart format. Utvidelsen av den binære filen er .bin. Innholdet i den binære filen kan leses ved hjelp av en innebygd funksjon eller modul. Ulike måter å lese binære filer i Python har blitt vist i denne opplæringen.

Forutsetning:

Før du sjekker eksemplene på denne opplæringen, er det bedre å lage en eller flere binære filer som skal brukes i eksempelskriptet. Skriptet til to python -filer har gitt nedenfor for å lage to binære filer. Binary1.py vil opprette en binær fil med navnet string.bin som vil inneholde strengdata, og binary2.py vil opprette en binær fil med navnet number_list.bin som vil inneholde en liste med numeriske data.







Binær1.py

# Åpne en filbehandler for å lage en binær fil

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

# Legg til to tekstlinjer i den binære filen

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

# Lukk filbehandleren

file_handler.Lukk()

Binary2.py

# Åpne en filbehandler for å lage en binær fil

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

# Angi en liste med numeriske verdier

tall=[10,30,Fire fem,60,70,85,99]

# Konverter listen til matrise

barray=bytearray(tall)

# Skriv matrise i filen

fil.skrive(barray)

fil.Lukk()

Eksempel-1: Les den binære filen med strengdata i byte-matrisen

Det finnes mange måter i Python for å lese den binære filen. Du kan lese det bestemte antall byte eller hele innholdet i den binære filen om gangen. Opprett en python -fil med følgende skript. De åpen () -funksjon har brukt til å åpne string.bin for lesing. De read () -funksjon har blitt brukt til å lese 7 tegn fra filen i hver iterasjon av mens loop og print. Deretter vil read () -funksjon har blitt brukt uten noe argument for å lese hele innholdet i den binære filen som vil bli skrevet ut senere.



# Åpne den binære filen for lesing

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

# Les de tre første byte fra den binære filen

data_byte=file_handler.lese(7)

skrive ut('Skriv ut tre tegn i hver iterasjon:')

# Gjenta sløyfen for å lese den gjenværende delen av filen

samtidig somdata_byte:

skrive ut(data_byte)

data_byte=file_handler.lese(7)


# Les hele filen som en enkelt byte -streng

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

innhold=fh.lese()

skrive ut('Skriv ut hele innholdet i den binære filen:')

skrive ut(innhold)

Produksjon:

Følgende utdata vises etter at skriptet ovenfor er utført.







Eksempel 2: Les den binære filen med strengdata i matrisen

Opprett en python -fil med følgende skript for å lese en binær fil som heter number_list.bin opprettet tidligere. Denne binære filen inneholder en liste over numeriske data. Som forrige eksempel, åpen () -funksjon har brukt åpne den binære filen for å lese i skriptet. Deretter vil de fem første tallene bli lest fra den binære filen og konvertert til en liste før utskrift.

# Åpne den binære filen for lesing

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

# Les de fem første tallene i en liste

Nummer= liste(fil.lese(5))

# Skriv ut listen

skrive ut(Nummer)

# Lukk filen

fil.Lukk()

Produksjon:

Følgende utdata vises etter at skriptet ovenfor er utført. Den binære filen inneholder 7 tall, og de fem første tallene er skrevet ut i utgangen.



Eksempel-3: Les binærfil ved hjelp av NumPy

Måtene å lage den binære filen ved hjelp av NumPy -matrise og les innholdet i den binære filen i en liste ved å bruke NumPy -modul har vist i denne delen av opplæringen. Før du sjekker skriptet gitt nedenfor, må du installere NumPy -modul ved å utføre kommandoen fra terminalen eller installere NumPy -pakke i Python -editoren, der skriptet vil bli utført. De tofile () -funksjonen brukes til å lage en tekst- eller binærfil, og fromfile () -funksjon brukes til å lage en matrise ved å lese en tekst eller binær fil.

Syntaks for tofile ():

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

Det første argumentet er obligatorisk og tar filnavnet eller strengen eller banen som en verdi. Filen vil bli opprettet hvis et filnavn er gitt i dette argumentet. Det andre argumentet er valgfritt som brukes til å skille matriseelementene. Det tredje argumentet er også valgfritt og brukes til å formatere utdataene fra tekstfilen.

Syntaks for fomfile ():

numpy.fra fil(fil,dtype=flyte,telle=-1,Sep='',forskyvning=0,*,som=Ingen)

Det første argumentet er obligatorisk og tar filnavnet eller strengen eller banen som en verdi. Innholdet i filen vil bli lest hvis et filnavn kommer i dette argumentet. De dtype definerer datatypen for den returnerte matrisen. Tellingen brukes til å telle antall elementer. Hensikten med Sep er å skille tekst- eller matriselementene. Forskyvningen brukes til å definere gjeldende posisjon for filen. Det siste argumentet brukes til å lage et matriseobjekt som ikke et NumPy -matrise .

Opprett en python -fil med følgende skript for å lage en binær fil ved hjelp av NumPy -matrise og lese og skrive ut innholdet i den binære filen.

# Importer NumPy -modul

importnumpysomf.eks

# Deklarere numpy array

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

# Lag binær fil fra numpy array

nparray.å lagre('list.bin')

# Skriv ut data fra den binære filen

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

Produksjon:

Følgende utdata vises etter at skriptet ovenfor er utført.

Konklusjon:

Tre forskjellige måter å lese den binære filen har blitt vist i denne opplæringen ved å bruke enkle eksempler. Det første eksemplet returnerte innholdet i den binære filen som en byte -matrise. Det andre eksemplet returnerte innholdet i den binære filen som en liste. Det siste eksemplet returnerte også innholdet i den binære filen som en liste.