logo

Branje binarnih datotek v Pythonu

Branje binarnih datotek je pomembna veščina za delo s podatki (nebesedilnimi), kot so slike, zvok in videi. Uporaba datotečnega načina in prebrati način, s katerim lahko preprosto berete binarne datoteke. Python ima možnost ravnanja s podatki in soglasje nudi različno pomoč pri določenih kriterijih. Ne glede na to, ali se ukvarjate s večpredstavnostnih datotek, stisnjenih podatkov ali binarnega zapisa po meri s, zmožnost Pythona za obdelavo binarnih podatkov vam omogoča ustvarjanje zmogljivih in vsestranskih aplikacij za širok spekter primerov uporabe. V tem članku se boste naučili Kaj so binarne datoteke in kako brati podatke v niz bajtov , in Prebrati binarne podatke v delih? in tako naprej.

Kaj so binarne datoteke?

Na splošno binarno pomeni dva. V računalništvu so binarne datoteke shranjene v binarni obliki s ciframi 0 in 1 . na primer število 9 v binarni obliki je predstavljeno kot '1001' . Na ta način naš računalnik shrani vsako datoteko v strojno berljivi obliki v zaporedju binarnih števk. Struktura in oblika binarnih datotek sta odvisna od vrste datoteke. Slikovne datoteke imajo drugačno strukturo v primerjavi z zvočnimi datotekami. Vendar je dekodiranje binarnih datotek odvisno od kompleksnosti zapisa datoteke. V tem članku bomo razumeli branje binarnih datotek.

Python prebere binarno datoteko

Če želite prebrati binarno datoteko,



1. korak: Odprite binarno datoteko v binarnem načinu

Če želite prebrati binarno datoteko v Pythonu, jo moramo najprej odpreti v binarnem načinu ('rb'). To lahko dosežemo s funkcijo 'open()'.

2. korak: Ustvarite binarno datoteko

Če želite ustvariti binarno datoteko v Pythonu, morate datoteko odpreti v binarnem načinu pisanja ( wb ). Za več glejte ta članek.

Python – zapisovanje bajtov v datoteko

3. korak: preberite binarne podatke

Po odprtju binarne datoteke v binarnem načinu lahko z metodo read() preberemo njeno vsebino v spremenljivko. Metoda read() bo vrnila zaporedje bajtov, ki predstavljajo binarne podatke.

4. korak: Obdelajte binarne podatke

linux arhitektura

Ko preberemo binarne podatke v spremenljivko, jih lahko obdelamo v skladu z našimi posebnimi zahtevami. Obdelava binarnih podatkov lahko vključuje različne naloge, kot je dekodiranje binarnih podatkov, analiza vsebine ali zapisovanje podatkov v drugo binarno datoteko.

5. korak: Zaprite datoteko

Po branju in obdelavi binarnih podatkov je bistveno, da zaprete datoteko z metodo close(), da sprostite sistemske vire in se izognete morebitnim težavam z dostopom do datoteke.

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

>

>

Izhod:

V izhodu vidimo zaporedje bajtnih podatkov, saj so bajti temeljna enota binarne predstavitve.

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

Branje binarnih podatkov v niz bajtov

Ta dana koda prikazuje, kako prebrati binarne podatke iz datoteke v bajtno matriko in nato prebrati binarne podatke v binarno matriko, natisniti podatke z uporabo zanke while. Razložimo kodo korak za korakom:

Odprite binarno datoteko

Ta vrstica odpre binarno datoteko z imenom string.bin v binarnem načinu ('rb'). Datoteka se odpre za branje, predmet datoteke pa se shrani v spremenljivko 'file'.

Python3




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

>

>

Branje prvih treh bajtov

Ta vrstica prebere prve tri bajte iz binarne datoteke in jih shrani v spremenljive podatke. Metoda read(3) bajte iz datoteke in premakne kazalec ustrezno naprej.

Python3




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

>

>

Tiskanje podatkov z uporabo zanke while

Zanka bo brala in tiskala tri bajte naenkrat, dokler ne bo dosežen konec datoteke. Ko je dosežen konec datoteke, bo metoda read() vrnila prazen objekt bytes, ki je v pogoju zanke while ovrednoten na False, in zanka se bo končala.

Python3




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

>

>

np pomeni

Zaprite binarno datoteko

Nazadnje, potem ko je zanka končala z branjem in tiskanjem podatkov, zapremo binarno datoteko z uporabo metode 'close()' za sprostitev sistemskih virov.

Python3




file>.close()>

>

>

Z uporabo zgornjih korakov v enem bomo dobili tole:

Izhod kode bo odvisen od vsebine niz.bin binarna datoteka. Koda bere in natisne podatke v kosih po tri bajte naenkrat, dokler ni dosežen konec datoteke. Vsaka ponovitev zanke bo natisnila tri bajte, prebrane iz datoteke.

Python




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

>

>

Na primer, če je vsebina string.bin b'GeeksForGeeks' (zaporedje šestih bajtov), ​​bo rezultat:

Izhod:

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

Preberite binarne datoteke v kosih

Za branje binarnih podatkov datoteke v kosih uporabimo zanko while za branje binarnih podatkov iz datoteke v kosih določene velikosti (chunk_size). Zanka se nadaljuje, dokler ni dosežen konec datoteke, in vsak kos podatkov se ustrezno obdela.

V tem se chunk_size=1024 uporablja za določanje velikosti vsakega kosa za branje binarne datoteke. file = open(binary_file.bin, rb): Ta vrstica odpre binarno datoteko z imenom binary_file.bin v binarnem načinu (rb). medtem ko se True uporablja za nastavitev neskončne zanke, ki bo nadaljevala z branjem datoteke v kosih, dokler ne bo dosežen konec datoteke. chunk = datoteka. read(chunk_size) je znotraj zanke, metoda read(chunk_size) pa se uporablja za branje dela binarnih podatkov iz datoteke.

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

>

>

Izhod kode bo odvisen od vsebine binarne datoteke binary_file.bin in navedene velikosti chunk_size. Na primer, če datoteka vsebuje binarne podatke b Pozdravljeni, to so binarni podatki!' in je chunk_size nastavljena na 10, rezultat bo:

Izhod:

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

Izhodi se razlikujejo glede na podatke binarne datoteke, ki jih beremo, in tudi na velikost kosa, ki jo podajamo.

Branje podatkov binarne datoteke v polje

Za branje binarne datoteke v array.bin in uporabo načina wb za pisanje dane binarne datoteke. Matrika je ime datoteke. dodelite matriko kot num=[3,6,9,12,18], da dobite matriko v bajtni obliki. uporabite niz bajtov ().

Za pisanje matrike v datoteko, ki jo uporabljamo:

Python3




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

>

razvrščanje z združitvijo

>

Za branje zapisane matrike iz dane datoteke smo uporabili isto datoteko, tj. file=open(array, rb). rb, ki se uporablja za branje matrike iz datoteke. List() se uporablja za ustvarjanje predmeta seznama. število=seznam(datoteka. branje(3)). Za branje bajtov iz datoteke. uporablja se read().

Python3




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

>

>

Izhod:

[3,6,9]>

Branje binarnih datotek v Pythonu z uporabo NumPy

Če želite prebrati binarno datoteko v matriko NumPy, uvozite modul NumPy. Dtype je np.unit8, kar pomeni nepredznačeno 8-bitno celo število. To pomeni, da je vsak element v matriki 8-bitno (1 bajt) celo število z vrednostmi, ki so lahko v razponu od 0 do 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>

>

>

Ne pozabite spremeniti datoteke v binarne datoteke

Izhod :

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

Sorodni članek

Python | Pretvori niz v bajte

Python Array

Preberite datoteko vrstico za vrstico v Pythonu

Branje in pisanje besedilne datoteke v Pythonu