Kuidas lugeda binaarfaile Pythonis

How Read Binary Files Python



Faili, mis sisaldab kahendandmeid, nimetatakse binaarfailiks. Kõik vormindatud või vormindamata kahendandmed salvestatakse binaarfaili ja see fail ei ole inimestele loetav ning arvuti kasutab seda otse. Kui binaarfail on vajalik ühest kohast teise lugemiseks või teisaldamiseks, teisendatakse või kodeeritakse faili sisu inimesele loetavasse vormingusse. Binaarfaili laiend on .bin. Binaarfaili sisu saab lugeda sisseehitatud funktsiooni või mooduli abil. Selles õpetuses on näidatud erinevaid viise Pythonis binaarfailide lugemiseks.

Eeltingimus:

Enne selle õpetuse näidete kontrollimist on parem luua näiteskriptis kasutamiseks üks või mitu binaarfaili. Kahe pythoni faili skript on allpool toodud kahe binaarfaili loomiseks. Binary1.py loob binaarfaili nimega string.bin mis sisaldab stringiandmeid ja binary2.py loob binaarfaili nimega number_list.bin mis sisaldab arvandmete loendit.







Binaarne1.py

# Binaarfaili loomiseks avage failihaldur

failihaldur= lahti('string.bin', 'wb')

# Lisage binaarfaili kaks rida teksti

failihaldur.kirjutada(b„Tere tulemast LinuxHinti. nÕpi Pythoni programmeerimist. ')

# Sulgege failihaldur

failihaldur.Sulge()

Binaarne2.py

# Binaarfaili loomiseks avage failihaldur

faili=lahti('number_list.bin','wb')

# Kuulutage arvväärtuste loend

numbrid=[10,30,Neli, viis,60,70,85,99]

# Teisendage loend massiiviks

barray=muuseas(numbrid)

# Kirjutage faili massiiv

faili.kirjutada(barray)

faili.Sulge()

Näide-1: lugege stringiandmete binaarfaili baidimassiivi

Pythonis on kahendfaili lugemiseks palju võimalusi. Saate lugeda konkreetset baitide arvu või binaarfaili täielikku sisu korraga. Looge järgmise skriptiga pythoni fail. The open () funktsioon on varem avanud string.bin lugemiseks. The funktsioon (read) on kasutatud failist 7 tähemärgi lugemiseks tsüklite ja printimise iga iteratsiooni ajal. Edasi, funktsioon (read) on ilma igasuguste argumentideta kasutatud hiljem trükitava binaarfaili täieliku sisu lugemiseks.



# Avage binaarfail lugemiseks

failihaldur= lahti('string.bin', 'rb')

# Lugege binaarfailist kolme esimest baiti

data_bait=failihaldur.loe(7)

printida('Printige iga korduse jaoks kolm tähemärki:')

# Faili ülejäänud osa lugemiseks korrake tsüklit

samasdata_bait:

printida(data_bait)

data_bait=failihaldur.loe(7)


# Lugege kogu faili ühe baidi stringina

koos lahti('string.bin', 'rb') nagufh:

sisu=fh.loe()

printida('Printige kogu binaarfaili sisu:')

printida(sisu)

Väljund:

Pärast ülaltoodud skripti täitmist ilmub järgmine väljund.







Näide-2: lugege massiivi stringiandmete binaarfail

Nimega binaarfaili lugemiseks looge järgmise skriptiga pythoni fail number_list.bin varem loodud. See binaarfail sisaldab arvandmete loendit. Nagu eelmine näide, on open () funktsioon on skriptis lugemiseks kasutanud binaarfaili avamist. Seejärel loetakse binaarfailist esimesed 5 numbrit ja teisendatakse need enne printimist loendiks.

# Avage binaarfail lugemiseks

faili = lahti('number_list.bin', 'rb')

# Lugege loendisse viis esimest numbrit

number= nimekirja(faili.loe(5))

# Printige loend

printida(number)

# Sulgege fail

faili.Sulge()

Väljund:

Pärast ülaltoodud skripti täitmist ilmub järgmine väljund. Binaarfail sisaldab 7 numbrit ja viis esimest numbrit on väljundisse trükitud.



Näide-3: lugege binaarfaili NumPy abil

Binaarfaili loomise viisid, kasutades NumPy massiiv ja lugege binaarfaili sisu loendisse, kasutades NumPy moodul on näidanud selles õpetuse osas. Enne allpool toodud skripti kontrollimist peate installima NumPy moodul täites käsu terminalist või installides Pakett NumPy Pythoni redaktoris, kus skript käivitatakse. The tofile () funktsioon kasutatakse teksti- või binaarfaili loomiseks ja fromfile () funktsioon kasutatakse massiivi loomiseks teksti- või binaarfaili lugedes.

Tofile'i süntaks ():

ndarray.tofile(faili,Sept='',vormingus='%s')

Esimene argument on kohustuslik ja võtab väärtuseks failinime, stringi või tee. Fail luuakse, kui selles argumendis on failinimi. Teine argument on valikuline, mida kasutatakse massiivi elementide eraldamiseks. Kolmas argument on samuti valikuline ja seda kasutatakse tekstifaili väljundi vormindamiseks.

Fomfile'i () süntaks:

numpy.failist(faili,dtype=hõljuma,loendama=-1,Sept='',nihe=0,*,meeldib=Puudub)

Esimene argument on kohustuslik ja võtab väärtuseks failinime, stringi või tee. Faili sisu loetakse, kui selles argumendis esitatakse failinimi. The dtype määratleb tagastatava massiivi andmetüübi. Loendit kasutatakse üksuste arvu loendamiseks. Eesmärk Sept on teksti- või massiivielementide eraldamine. Nihkega määratakse faili praegune asukoht. Viimast argumenti kasutatakse massiiviobjekti loomiseks, mis ei ole a NumPy massiiv .

Looge python -fail järgmise skriptiga, et luua binaarfail, kasutades NumPy massiiv ning lugege ja printige binaarfaili sisu.

# Impordi NumPy moodul

importnumpynagunt

# Deklareeri numbrimassiiv

nparray=nt.massiiv([3. 4, 89, 30, Neli, viis, 90, üksteist])

# Loo numbrimassiivist binaarfail

nparray.tofile('list.bin')

# Printige andmed binaarfailist

printida(nt.failist('list.bin',dtype=nt.int64))

Väljund:

Pärast ülaltoodud skripti täitmist ilmub järgmine väljund.

Järeldus:

Selles õpetuses on lihtsate näidete abil näidatud kolme erinevat võimalust binaarfaili lugemiseks. Esimene näide tagastab binaarfaili sisu baidimassiivina. Teine näide tagastab binaarfaili sisu loendina. Viimane näide tagastab ka binaarfaili sisu loendina.