Paano Basahin ang Mga Binary Files sa Python

How Read Binary Files Python



Ang file na naglalaman ng binary data ay tinatawag na isang binary file. Ang anumang na-format o hindi na-format na binary data ay nakaimbak sa isang binary file, at ang file na ito ay hindi nababasa ng tao at direktang ginagamit ng computer. Kapag kinakailangan ng isang file na binary upang mabasa o ilipat mula sa isang lokasyon patungo sa isa pang lokasyon, ang nilalaman ng file ay na-convert o naka-encode sa isang nababasa na format ng tao. Ang extension ng binary file ay .bin. Ang nilalaman ng binary file ay maaaring mabasa sa pamamagitan ng paggamit ng built-in na pag-andar o modyul. Ang iba't ibang mga paraan upang mabasa ang mga binary file sa Python ay ipinakita sa tutorial na ito.

Paunang kinakailangan:

Bago suriin ang mga halimbawa ng tutorial na ito, mas mahusay na lumikha ng isa o higit pang mga binary file upang magamit sa halimbawa ng script. Ang script ng dalawang mga python file ay ibinigay sa ibaba upang lumikha ng dalawang mga binary file. Ang binary1.py ay lilikha ng isang binary file na pinangalanan lubid.bin maglalaman iyon ng data ng string, at ang binary2.py ay lilikha ng isang binary file na pinangalanan number_list.bin maglalaman iyon ng isang listahan ng data ng bilang.







Binary1.py

# Magbukas ng isang handler ng file upang lumikha ng isang binary file

file_handler= buksan('string.bin', 'wb')

# Magdagdag ng dalawang linya ng teksto sa binary file

file_handler.sumulat(b'Maligayang pagdating sa LinuxHint. nAlamin ang Python Programming. ')

# Isara ang handler ng file

file_handler.malapit na()

Binary2.py

# Magbukas ng isang handler ng file upang lumikha ng isang binary file

file=buksan('number_list.bin','wb')

# Ipahayag ang isang listahan ng mga halagang bilang

numero=[10,30,Apat lima,60,70,85,99]

# I-convert ang listahan sa array

barray=bytearray(numero)

# Isulat ang array sa file

file.sumulat(barray)

file.malapit na()

Halimbawa-1: Basahin ang binary file ng data ng string sa byte array

Maraming mga paraan ang umiiral sa Python upang mabasa ang binary file. Maaari mong basahin ang partikular na bilang ng mga byte o ang buong nilalaman ng binary file nang paisa-isa. Lumikha ng isang python file gamit ang sumusunod na script. Ang buksan () ang pagpapaandar ay ginamit upang buksan ang lubid.bin para sa pagbabasa. Ang basahin ang () pagpapaandar ay ginamit upang basahin ang 7 mga character mula sa file sa bawat pag-ulit ng habang loop at i-print. Susunod, ang basahin ang () pagpapaandar ay ginamit nang walang anumang argument upang basahin ang buong nilalaman ng binary file na mai-print sa paglaon.



# Buksan ang binary file para sa pagbabasa

file_handler= buksan('string.bin', 'rb')

# Basahin ang unang tatlong byte mula sa binary file

data_byte=file_handler.basahin(7)

mag-print('I-print ang tatlong mga character sa bawat pag-ulit:')

# Iterate ang loop upang mabasa ang natitirang bahagi ng file

habangdata_byte:

mag-print(data_byte)

data_byte=file_handler.basahin(7)


# Basahin ang buong file bilang isang solong byte string

kasama si buksan('string.bin', 'rb') bilangfh:

nilalaman=fhbasahin()

mag-print('I-print ang buong nilalaman ng binary file:')

mag-print(nilalaman)

Output:

Lilitaw ang sumusunod na output pagkatapos ipatupad ang script sa itaas.







Halimbawa-2: Basahin ang binary file ng data ng string sa array

Lumikha ng isang python file na may sumusunod na script upang mabasa ang isang binary file na pinangalanan number_list.bin nilikha dati. Naglalaman ang binary file na ito ng isang listahan ng data sa bilang. Tulad ng nakaraang halimbawa, ang buksan () ang pagpapaandar ay ginamit buksan ang binary file para sa pagbabasa sa script. Susunod, ang unang 5 mga numero ay mababasa mula sa binary file at mai-convert sa isang listahan bago i-print.

# Buksan ang binary file para sa pagbabasa

file = buksan('number_list.bin', 'rb')

# Basahin ang unang limang mga numero sa isang listahan

numero= listahan(file.basahin(5))

# I-print ang listahan

mag-print(numero)

# Isara ang file

file.malapit na()

Output:

Lilitaw ang sumusunod na output pagkatapos ipatupad ang script sa itaas. Naglalaman ang binary file ng 7 mga numero, at ang unang limang mga numero ay nakalimbag sa output.



Halimbawa-3: Basahin ang binary file gamit ang NumPy

Ang mga paraan upang likhain ang binary file gamit ang NumPy array at basahin ang nilalaman ng binary file na ginagamit sa isang listahan sa pamamagitan ng paggamit ng Modyum NumPy ipinakita sa bahaging ito ng tutorial. Bago suriin ang script na ibinigay sa ibaba, kailangan mong i-install ang Modyum NumPy sa pamamagitan ng pagpapatupad ng utos mula sa terminal o pag-install ng Pakete ng NumPy sa editor ng Python, kung saan ang script ay papatayin. Ang pag-andar ng tofile () ay ginagamit upang lumikha ng isang teksto o binary file, at ang mula sa pag-andar ngfile () ay ginagamit upang lumikha ng isang array sa pamamagitan ng pagbabasa ng isang teksto o binary file.

Syntax ng tofile ():

nagkagulomakinang(file,Sep=',format='% s')

Ang unang argumento ay sapilitan at kinukuha ang filename o string o path bilang isang halaga. Malilikha ang file kung ang isang filename ay ibibigay sa argument na ito. Ang pangalawang argumento ay opsyonal na ginagamit upang paghiwalayin ang mga elemento ng array. Ang pangatlong argumento ay opsyonal din at ginagamit para sa pag-format ng output ng file ng teksto.

Syntax ng fomfile ():

numpymula sa file(file,dtype=lumutang,bilangin=-1,Sep=',offset=0,*,gusto=Wala)

Ang unang argumento ay sapilitan at kinukuha ang filename o string o path bilang isang halaga. Mababasa ang nilalaman ng file kung ang isang filename ay ibibigay sa argumentong ito. Ang dtype tumutukoy sa uri ng data ng naibalik na array. Ginagamit ang bilang upang mabilang ang bilang ng mga item. Ang layunin ng Sep ay upang paghiwalayin ang teksto o mga item ng array. Ginagamit ang offset upang tukuyin ang kasalukuyang posisyon ng file. Ang huling argument ay ginamit upang lumikha ng isang array object na hindi a NumPy array .

Lumikha ng isang python file gamit ang sumusunod na script upang lumikha ng isang binary file na ginagamit NumPy array at basahin at i-print ang nilalaman ng binary file.

# I-import ang module ng NumPy

angkatnumpybilanghal

# Ipahayag ang numpy array

nparray=hal.array([3. 4, 89, 30, Apat lima, 90, labing-isang])

# Lumikha ng binary file mula sa numpy array

nparray.makinang('list.bin')

# I-print ang data mula sa binary file

mag-print(hal.mula sa file('list.bin',dtype=hal.int64))

Output:

Lilitaw ang sumusunod na output pagkatapos ipatupad ang script sa itaas.

Konklusyon:

Tatlong magkakaibang paraan upang mabasa ang binary file ay ipinakita sa tutorial na ito sa pamamagitan ng paggamit ng mga simpleng halimbawa. Ang unang halimbawa ay ibinalik ang nilalaman ng binary file bilang isang byte array. Ang pangalawang halimbawa ay nagbalik ng nilalaman ng binary file bilang isang listahan. Ang huling halimbawa ay ibinalik din ang nilalaman ng binary file bilang isang listahan.