Dvejetainių failų skaitymas yra svarbus įgūdis dirbant su duomenimis (ne tekstiniais), tokiais kaip vaizdai, garsas ir vaizdo įrašai. Naudojant failo režimą ir skaityti Naudodami šį metodą galite lengvai skaityti dvejetainius failus. Python turi galimybę tvarkyti duomenis ir sutikimas suteikia įvairią pagalbą pagal tam tikrus kriterijus. Nesvarbu, ar turite reikalų su daugialypės terpės failai, suspausti duomenys arba pasirinktinis dvejetainis formatas s, Python gebėjimas tvarkyti dvejetainius duomenis įgalina kurti galingas ir universalias programas įvairiems naudojimo atvejams. Šiame straipsnyje jūs sužinosite Kas yra dvejetainiai failai ir kaip nuskaityti duomenis į baitų masyvą , ir Skaityti dvejetainius duomenis į dalis? ir taip toliau.
Kas yra dvejetainiai failai?
Paprastai dvejetainis reiškia du. Informatikos srityje dvejetainiai failai saugomi dvejetainiu formatu, turinčiu skaitmenis 0 ir 1 . Pavyzdžiui, skaičius 9 dvejetainiu formatu vaizduojamas kaip '1001' . Tokiu būdu mūsų kompiuteris saugo kiekvieną failą kompiuterio skaitomu formatu dvejetainių skaitmenų seka. Dvejetainių failų struktūra ir formatas priklauso nuo failo tipo. Palyginti su garso failais, vaizdo failų struktūra skiriasi. Tačiau dvejetainių failų dekodavimas priklauso nuo failo formato sudėtingumo. Šiame straipsnyje supraskime dvejetainių failų skaitymą.
Python skaitykite dvejetainį failą
Norėdami skaityti dvejetainį failą,
1 veiksmas: atidarykite dvejetainį failą dvejetainiu režimu
Norėdami nuskaityti dvejetainį failą Python, pirmiausia turime jį atidaryti dvejetainiu režimu („rb“). Norėdami tai padaryti, galime naudoti funkciją „open ()“.
2 veiksmas: sukurkite dvejetainį failą
Norėdami sukurti dvejetainį failą Python, turite atidaryti failą dvejetainiu rašymo režimu (wb). Daugiau informacijos rasite šiame straipsnyje.
Python – įrašykite baitus į failą
3 veiksmas: perskaitykite dvejetainius duomenis
Atidarę dvejetainį failą dvejetainiu režimu, galime naudoti skaitymo () metodą, norėdami perskaityti jo turinį į kintamąjį. Skaitymo () metodas grąžins baitų seką, kuri atspindi dvejetainius duomenis.
4 veiksmas: apdorokite dvejetainius duomenis
Perskaitę dvejetainius duomenis į kintamąjį, galime juos apdoroti pagal savo specifinius reikalavimus. Dvejetainių duomenų apdorojimas gali apimti įvairias užduotis, pvz., dvejetainių duomenų dekodavimą, turinio analizę arba duomenų įrašymą į kitą dvejetainį failą.
5 veiksmas: uždarykite failą
Perskaičius ir apdorojus dvejetainius duomenis, būtina uždaryti failą naudojant close() metodą, kad būtų atlaisvinti sistemos ištekliai ir išvengta galimų problemų dėl prieigos prie failų.
Python3
kokio dydžio mano monitoriaus ekranas
# 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()> |
>
>
Išvestis:
Išvestyje matome baitų duomenų seką, nes baitai yra pagrindinis dvejetainio vaizdavimo vienetas.
b'PKx03x04x14x00x00x00x08x00UxbdxebVxc2=jx87x1ex00x00x00!x00x00x00 x00x00 x00TODO11.txtxe3xe5JN,xceH-/xe6xe5x82xc0xccxbcx92xd4x9cx9cxccx82xc4xc4x12^.w7wx10 x02x14x00x14x00x00x00x08x00UxbdxebVxc2=jx87x1ex00x00x00!x00x00x00 x00x00 x00x00x00x00x00x01x00 x00x00x00x00x00x00x00TODO11.txtPKx05x06x00x00x00x00x01x00 x00x00x00Fx00x00x00x00x00′
Dvejetainių duomenų skaitymas į baitų masyvą
Šis pateiktas kodas parodo, kaip nuskaityti dvejetainius duomenis iš failo į baitų masyvą, o tada, norint nuskaityti dvejetainius duomenis į dvejetainį masyvą, atspausdinkite duomenis naudodami ciklą. Paaiškinkime kodą žingsnis po žingsnio:
Atidarykite dvejetainį failą
Ši eilutė atidaro dvejetainį failą, pavadintą string.bin dvejetainiu režimu („rb“). Failas atidaromas skaitymui, o failo objektas išsaugomas kintamajame „file“.
Python3
# Open the binary file> file> => open>(>'string.bin'>,>'rb'>)> |
>
>
Pirmųjų trijų baitų skaitymas
Ši eilutė nuskaito pirmuosius tris baitus iš dvejetainio failo ir išsaugo juos kintamuosiuose duomenyse. Skaitymo(3) metodas baitais iš failo ir atitinkamai nukreipia žymeklį.
Python3
data>=> file>.read(>3>)> |
>
>
Spausdinkite duomenis naudodami „a while Loop“.
Ciklas vienu metu skaitys ir spausdins tris baitus, kol pasieks failo pabaigą. Pasiekus failo pabaigą, metodas read() grąžins tuščių baitų objektą, kuris, esant while ciklo sąlygai, įvertinamas kaip False, ir ciklas baigsis.
Python3
while> data:> >print>(data)> >data>=> file>.read(>3>)> |
>
>
Uždarykite dvejetainį failą
Galiausiai, kai ciklas baigia skaityti ir spausdinti duomenis, mes uždarome dvejetainį failą naudodami „close ()“ metodą, kad atlaisvintume sistemos išteklius.
Python3
file>.close()> |
>
>
Dabar atlikę aukščiau nurodytus veiksmus viename, gausime tai:
Kodo išvestis priklausys nuo turinio string.bin dvejetainis failas. Kodas vienu metu nuskaito ir spausdina duomenis trijų baitų dalimis, kol pasiekiama failo pabaiga. Kiekviena ciklo iteracija išspausdins tris baitus, nuskaitytus iš failo.
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()> |
>
>
Pavyzdžiui, jei string.bin turinys yra b'GeeksForGeeks' (šešių baitų seka), išvestis bus tokia:
Išvestis:
b 'Gee' b ' ksf' b 'org' b 'eek' b 's'>
Skaitykite dvejetainius failus „Cunks“.
Norėdami nuskaityti dvejetainius failo duomenis gabalais, naudojame ciklą, norėdami nuskaityti dvejetainius duomenis iš failo nurodyto dydžio (gabalo_dydis) dalimis. Ciklas tęsiasi tol, kol pasiekiama failo pabaiga, ir atitinkamai apdorojama kiekviena duomenų dalis.
Šiuo atveju chunk_size=1024 naudojamas nurodyti kiekvieno gabalo dydį, kad būtų galima nuskaityti dvejetainį failą. file = open(binary_file.bin, rb): ši eilutė atidaro dvejetainį failą pavadinimu binary_file.bin dvejetainiu režimu (rb). o True yra naudojamas nustatyti begalinę kilpą, kuri toliau skaitys failą dalimis, kol bus pasiekta failo pabaiga. gabalas = failas. read(chunk_size) yra ciklo viduje, o skaitymo (gabalo_dydis) metodas naudojamas dvejetainių duomenų daliai iš failo nuskaityti.
Python3
kaip java paversti sveikąjį skaičių į eilutę
# 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}'>)> |
>
>
Kodo išvestis priklausys nuo dvejetainio failo binary_file.bin turinio ir nurodyto chunk_size. Pavyzdžiui, jei faile yra dvejetainiai duomenys b Sveiki, tai dvejetainiai duomenys!', o chunk_size nustatytas į 10, išvestis bus tokia:
Išvestis:
Read 10 bytes: b'Hello, thi' Read 10 bytes: b's is binar' Read 7 bytes: b'y data!'>
Išvestis skiriasi priklausomai nuo dvejetainių failų duomenų, kuriuos skaitome, ir nuo nurodomo gabalo dydžio.
Skaityti dvejetainio failo duomenis į masyvą
Norėdami nuskaityti dvejetainį failą į masyvą.bin ir naudoti wb režimą tam, kad įrašytumėte nurodytą dvejetainį failą. Masyvas yra failo pavadinimas. priskyrė masyvą kaip num=[3,6,9,12,18], kad gautumėte masyvą baitų formatu. naudokite baitų masyvą ().
Norėdami įrašyti masyvą į failą, kurį naudojame:
Python3
file>=>open>(>'array'>,>'wb'>)> num>=>[>3>,>6>,>9>,>12>,>18>]> array>=>bytearray(num)> file>.write(array)> file>.close()> |
>
>
Norėdami nuskaityti parašytą masyvą iš nurodyto failo, naudojome tą patį failą, ty file=open(masyvas, rb). rb naudojamas nuskaityti masyvą iš failo. List() naudojamas sąrašo objektui sukurti. numeris=sąrašas(failas. skaityti(3)). Norėdami nuskaityti baitus iš failo. Naudojamas read().
Python3
file>=>open>(>'array'>,>'rb'>)> number>=>list>(>file>.read(>3>))> print> (number)> file>.close()> |
>
>
Išvestis:
[3,6,9]>
Skaitykite dvejetainius failus Python naudodami NumPy
Norėdami nuskaityti dvejetainį failą į NumPy masyvą, importuokite modulį NumPy. Dtype yra np.unit8, kuris reiškia nepažymėtą 8 bitų sveikąjį skaičių. Tai reiškia, kad kiekvienas masyvo elementas yra 8 bitų (1 baito) sveikasis skaičius, kurio reikšmės gali svyruoti nuo 0 iki 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> |
>
>
Nepamirškite pakeisti failo į dvejetainius failus
Išvestis :
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=np.uint8)>
Susijęs straipsnis
Python | Konvertuoti eilutę į baitus