Hvordan lese binære filer i Python

Hvordan lese binære filer i Python

Filen som inneholder de binære dataene kalles en binær fil. Eventuelle formaterte eller uformaterte binære data lagres i en binær fil, og denne filen er ikke menneskelig lesbar og brukes direkte av datamaskinen. Når det kreves en binær fil for å lese eller overføre fra et sted til et annet sted, konverteres eller kodet filens innhold til et menneskelig lesbart format. Utvidelsen av den binære filen er .søppelkasse. Innholdet i den binære filen kan leses ved å bruke 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 lage en binær fil som heter streng.søppelkasse som vil inneholde strengdata, og binær2.PY vil lage en binær fil som heter NUMMER_LIST.søppelkasse som vil inneholde en liste over numeriske data.

Binary1.py

# Åpne en filbehandler for å opprette en binær fil
file_handler = åpen ("String.Bin "," WB ")
# Legg til to tekstlinjer i den binære filen
file_handler.Skriv (B "Velkommen til Linuxhint.\ nlearn python programmering.")
# Lukk filbehandleren
file_handler.Lukk()

Binary2.py

# Åpne en filbehandler for å opprette en binær fil
fil = åpen ("Number_list.Bin "," WB ")
# Erklære en liste over numeriske verdier
Tall = [10,30,45,60,70,85,99]
# Konverter listen til Array
barray = bytearray (tall)
# Skriv matrise inn i filen
fil.Skriv (Barray)
fil.Lukk()

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

Det finnes mange måter i Python for å lese den binære filen. Du kan lese det spesielle antallet byte eller det fulle innholdet i den binære filen om gangen. Lag en Python -fil med følgende skript. De Åpen () Funksjon har brukt til å åpne streng.søppelkasse for lesing. De Les () Funksjon har blitt brukt til å lese 7 tegn fra filen i hver iterasjon av mens du er sløyfe og utskrift. Neste, The Les () Funksjon har blitt brukt uten noe argument for å lese hele innholdet i den binære filen som skal skrives ut senere.

# Åpne den binære filen for lesing
file_handler = åpen ("String.Bin "," RB ")
# Les de tre første byteene fra den binære filen
data_byte = file_handler.Les (7)
Skriv ut ("Skriv ut tre tegn i hver iterasjon:")
# Itererer sløyfen for å lese den gjenværende delen av filen
mens data_byte:
print (data_byte)
data_byte = file_handler.Les (7)
# Les hele filen som en enkelt byte -streng
med åpen ('streng.bin ',' rb ') som fh:
Innhold = FH.lese()
Skriv ut ("Skriv ut hele innholdet i den binære filen:")
trykk (innhold)

Produksjon:

Følgende utgang vises etter å ha utført skriptet ovenfor.

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

Lag en Python -fil med følgende skript for å lese en binær fil som heter NUMMER_LIST.søppelkasse opprettet tidligere. Denne binære filen inneholder en liste over numeriske data. Som det forrige eksemplet, Åpen () Funksjon har brukt åpent den binære filen for lesing i skriptet. Deretter blir de første 5 tallene lest fra den binære filen og konvertert til en liste før du skriver ut.

# Å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.Les (5))
# Skriv ut listen
trykk (nummer)
# Lukk filen
fil.Lukk()

Produksjon:

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

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

Måtene å lage den binære filen ved å bruke Numpy Array og les innholdet i den binære filen ved å bruke til en liste ved å bruke Numpy modul har vist i denne delen av opplæringen. Før du sjekker skriptet nedenfor, må du installere Numpy modul ved å utføre kommandoen fra terminalen eller installere Numpy pakke i Python -redaktøren, der manuset skal utføres. De Tofile () -funksjon brukes til å lage en tekst eller binærfil, og Fromfile () -funksjonen brukes til å lage en matrise ved å lese en tekst eller binærfil.

Syntaks av Tofile ():

Ndarray.Tofile (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 av fomfile ():

numpy.Fromfile (fil, dtype = float, count =- 1, sep = ", offset = 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 vil bli gitt i dette argumentet. De dtype Definerer datatypen til den returnerte matrisen. Tellingen brukes til å telle antall varer. Formålet med september er å skille teksten eller array -elementene. Offset brukes til å definere den nåværende posisjonen til filen. Det siste argumentet brukes til å lage et matriseobjekt som ikke en Numpy Array.

Lag en Python -fil med følgende skript for å lage en binær fil ved hjelp av Numpy Array og les og skriv ut innholdet i den binære filen.

# Importer numpy modul
Importer numpy som NP
# Erklære numpy matrise
nParray = np.Array ([34, 89, 30, 45, 90, 11])
# Lag binærfil fra Numpy Array
nparray.Tofile ("Liste.BIN ")
# Skriv ut data fra den binære filen
trykk (NP.Fromfile ("Liste.bin ", dtype = np.int64))

Produksjon:

Følgende utgang vises etter å ha utført skriptet ovenfor.

Konklusjon:

Tre forskjellige måter å lese den binære filen har blitt vist i denne opplæringen ved å bruke enkle eksempler på. 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.