Lectura de fitxers binaris és una habilitat important per treballar amb dades (no textuals) com ara imatges, àudio i vídeos. Utilitzant el mode de fitxer i el llegir mètode que podeu llegir fàcilment fitxers binaris. Python té la capacitat de manejar les dades i el consentiment proporciona diverses ajudes amb determinats criteris. Tant si estàs tractant fitxers multimèdia, dades comprimides o format binari personalitzat s, la capacitat de Python per gestionar dades binàries us permet crear aplicacions potents i versàtils per a una àmplia gamma de casos d'ús. En aquest article aprendràs Què són els fitxers binaris i com llegir dades en una matriu de bytes , i Llegir dades binàries en trossos? etcètera.
Què són els fitxers binaris?
En general, binari significa dos. En informàtica, els fitxers binaris s'emmagatzemen en un format binari amb dígits 0's i 1's . Per exemple, el número 9 en format binari es representa com '1001' . D'aquesta manera, el nostre ordinador emmagatzema tots i cadascun dels fitxers en un format llegible per màquina en una seqüència de dígits binaris. L'estructura i el format dels fitxers binaris depenen del tipus de fitxer. Els fitxers d'imatge tenen estructures diferents en comparació amb els fitxers d'àudio. Tanmateix, la descodificació de fitxers binaris depèn de la complexitat del format del fitxer. En aquest article, entenem la lectura dels fitxers binaris.
Python llegeix un fitxer binari
Per llegir un fitxer binari,
Pas 1: obriu el fitxer binari en mode binari
Per llegir un fitxer binari a Python, primer, hem d'obrir-lo en mode binari ('rb'). Podem utilitzar la funció 'open()' per aconseguir-ho.
Pas 2: creeu un fitxer binari
Per crear un fitxer binari a Python, heu d'obrir el fitxer en mode d'escriptura binari ( wb ). Per a més informació consulteu aquest article.
Python: escriu bytes al fitxer
Pas 3: llegiu les dades binàries
Després d'obrir el fitxer binari en mode binari, podem utilitzar el mètode read() per llegir el seu contingut en una variable. El mètode read() retornarà una seqüència de bytes, que representa les dades binàries.
Pas 4: processeu les dades binàries
Un cop hem llegit les dades binàries en una variable, les podem processar segons els nostres requisits específics. El processament de les dades binàries podria implicar diverses tasques, com ara descodificar dades binàries, analitzar el contingut o escriure les dades en un altre fitxer binari.
Pas 5: tanqueu el fitxer
Després de llegir i processar les dades binàries, és essencial tancar el fitxer mitjançant el mètode close() per alliberar recursos del sistema i evitar possibles problemes amb l'accés al fitxer.
Python 3
# 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()> |
programació stdin c
>
>
Sortida:
A la sortida, veiem una seqüència de dades de bytes, ja que els bytes són la unitat fonamental de representació binària.
b'PKx03x04x14x00x00x00x08x00UxbdxebVxc2=jx87x1ex00x00x00!x00x00x00 x00x00 x00TODO11.txtxe3xe5JN,xceH-/xe6xe5x82xc0xccxbcx92xd4x9cx9cxccx82xc4xc4x12^.w7wx00PKx01 x02x14x00x14x00x00x00x08x00UxbdxebVxc2=jx87x1ex00x00x00!x00x00x00 x00x00 x00x00x00x00x00x01x00 x00x00x00x00x00x00x00TODO11.txtPKx05x06x00x00x00x00x01x00x00x00x00 x00x00x00Fx00x00x00x00x00′
Llegir dades binàries en una matriu de bytes
Aquest codi mostra com llegir dades binàries d'un fitxer a una matriu de bytes i, a continuació, Per llegir dades binàries a una matriu binària, imprimir les dades mitjançant un bucle while. Expliquem el codi pas a pas:
Obriu el fitxer binari
Aquesta línia obre el fitxer binari anomenat string.bin en mode binari ('rb'). El fitxer s'obre per llegir-lo i l'objecte del fitxer s'emmagatzema a la variable 'fitxer'.
Python 3
# Open the binary file> file> => open>(>'string.bin'>,>'rb'>)> |
>
>
Llegint els tres primers bytes
Aquesta línia llegeix els tres primers bytes del fitxer binari i els emmagatzema a les dades variables. El mètode read(3) bytes del fitxer i avança el punter en conseqüència.
Python 3
data>=> file>.read(>3>)> |
>
>
Imprimeix dades amb un bucle while
El bucle continuarà llegint i imprimint tres bytes alhora fins que s'arribi al final del fitxer. Un cop arribat al final del fitxer, el mètode read() retornarà un objecte bytes buit, que s'avalua com a Fals en la condició de bucle while, i el bucle finalitzarà.
Python 3
while> data:> >print>(data)> >data>=> file>.read(>3>)> |
>
>
Tanqueu el fitxer binari
Finalment, després que el bucle hagi acabat de llegir i imprimir les dades, tanquem el fitxer binari mitjançant el mètode 'close()' per alliberar els recursos del sistema.
Python 3
file>.close()> |
compara cadenes java
>
>
Ara, utilitzant els passos anteriors en un, obtindrem això:
La sortida del codi dependrà del contingut del fitxer string.bin fitxer binari. El codi llegeix i imprimeix les dades en trossos de tres bytes alhora fins que s'arriba al final del fitxer. Cada iteració del bucle imprimirà els tres bytes llegits del fitxer.
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()> |
>
>
Per exemple, si el contingut de string.bin és b'GeeksForGeeks' (una seqüència de sis bytes), la sortida serà:
Sortida:
b 'Gee' b ' ksf' b 'org' b 'eek' b 's'>
Llegir fitxers binaris a Chunks
Per llegir les dades del fitxer binari en trossos, fem servir un bucle while per llegir les dades binaries del fitxer en trossos de la mida especificada (tamany_de_part). El bucle continua fins que s'arriba al final del fitxer i cada tros de dades es processa en conseqüència.
En aquest fragment_size=1024 s'utilitza per especificar la mida de cada tros per llegir el fitxer binari. fitxer = open(binary_file.bin, rb): aquesta línia obre el fitxer binari anomenat binary_file.bin en mode binari (rb). mentre que True s'utilitza per configurar un bucle infinit que seguirà llegint el fitxer en trossos fins que s'arribi al final del fitxer. tros = fitxer. read(chunk_size) està dins del bucle, i el mètode read(chunk_size) s'utilitza per llegir un tros de dades binàries del fitxer.
Python 3
# 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}'>)> |
>
>
La sortida del codi dependrà del contingut del fitxer binari binary_file.bin i del chunk_size especificat, per exemple, si el fitxer conté les dades binàries b Hola, això són dades binàries!', i chunk_size s'estableix en 10, la sortida serà:
Sortida:
Read 10 bytes: b'Hello, thi' Read 10 bytes: b's is binar' Read 7 bytes: b'y data!'>
Les sortides varien en funció de les dades del fitxer binari que estem llegint i també de la mida del fragment que estem especificant.
Llegiu les dades del fitxer binari a la matriu
Per llegir un fitxer binari en un array.bin i utilitzar el mode wb per escriure un fitxer binari determinat. La matriu és el nom del fitxer. matriu assignada com a num=[3,6,9,12,18] per obtenir la matriu en format de bytes. utilitzar la matriu de bytes ().
Per escriure una matriu al fitxer fem servir:
Python 3
file>=>open>(>'array'>,>'wb'>)> num>=>[>3>,>6>,>9>,>12>,>18>]> array>=>bytearray(num)> file>.write(array)> file>.close()> |
>
>
Per llegir la matriu escrita del fitxer donat, hem utilitzat el mateix fitxer, és a dir, file=open(array, rb). rb s'utilitza per llegir la matriu del fitxer. El list() s'utilitza per crear un objecte llista. nombre=lista(fitxer. llegir(3)). Per llegir els bytes del fitxer. S'utilitza read().
Python 3
file>=>open>(>'array'>,>'rb'>)> number>=>list>(>file>.read(>3>))> print> (number)> file>.close()> |
mostrar als usuaris mysql
>
>
Sortida:
[3,6,9]>
Llegiu fitxers binaris en Python mitjançant NumPy
Per llegir un fitxer binari en una matriu NumPy, importeu el mòdul NumPy. El dtype és np.unit8, que significa enter de 8 bits sense signe. Això vol dir que cada element de la matriu és un nombre enter de 8 bits (1 byte), amb valors que poden anar de 0 a 255.
Python 3
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> |
>
>
Recordeu canviar el vostre fitxer als fitxers binaris
Sortida :
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=np.uint8)>
Article relacionat
Python | Converteix String en bytes