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