Čtení binárních souborů je důležitá dovednost pro práci s daty (netextovými), jako jsou obrázky, zvuk a videa. Pomocí režimu souborů a číst můžete snadno číst binární soubory. Krajta má schopnost nakládat s údaji a souhlas poskytuje různé pomoci s určitými kritérii. Ať už se zabýváte multimediální soubory, komprimovaná data nebo vlastní binární formát Schopnost Pythonu zpracovávat binární data vám umožňuje vytvářet výkonné a všestranné aplikace pro širokou škálu případů použití. V tomto článku se to dozvíte Co jsou to binární soubory a jak číst data do bajtového pole , a Číst binární data do bloků? a tak dále.
Co jsou binární soubory?
Obecně binární znamená dva. V informatice jsou binární soubory uloženy v binárním formátu s číslicemi 0 a 1 . Například, číslo 9 v binárním formátu je reprezentováno jako „1001“ . Tímto způsobem náš počítač ukládá každý soubor ve strojově čitelném formátu v sekvenci binárních číslic. Struktura a formát binárních souborů závisí na typu souboru. Obrazové soubory mají ve srovnání se zvukovými soubory odlišnou strukturu. Dekódování binárních souborů však závisí na složitosti formátu souboru. V tomto článku pochopíme čtení binárních souborů.
Python čte binární soubor
Chcete-li číst binární soubor,
Krok 1: Otevřete binární soubor v binárním režimu
Abychom mohli číst binární soubor v Pythonu, musíme jej nejprve otevřít v binárním režimu („rb“). K tomu můžeme použít funkci ‚open()‘.
Krok 2: Vytvořte binární soubor
Chcete-li vytvořit binární soubor v Pythonu, musíte soubor otevřít v režimu binárního zápisu ( wb ). Více viz tento článek.
Python – Zápis bajtů do souboru
Krok 3: Přečtěte si binární data
Po otevření binárního souboru v binárním režimu můžeme pomocí metody read() načíst jeho obsah do proměnné. Metoda read() vrátí sekvenci bajtů, která představuje binární data.
Krok 4: Zpracujte binární data
Jakmile načteme binární data do proměnné, můžeme je zpracovat podle našich specifických požadavků. Zpracování binárních dat může zahrnovat různé úkoly, jako je dekódování binárních dat, analýza obsahu nebo zápis dat do jiného binárního souboru.
Krok 5: Zavřete soubor
Po přečtení a zpracování binárních dat je nezbytné zavřít soubor pomocí metody close(), aby se uvolnily systémové prostředky a předešlo se potenciálním problémům s přístupem k souboru.
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()> |
>
>
Výstup:
Na výstupu vidíme sekvenci bajtových dat, protože bajty jsou základní jednotkou binární reprezentace.
b'PKx03x04x14x00x00x00x08x00UxbdxebVxc2=jx87x1ex00x00x00!x00x00x00 x00x00 x00TODO11.txtxe3xe5JN,xceH-/xe6xe5x82xc0xccxbcx92xd4x9cx9cxccx82xc4xc4x12^.w7wx00PKx x02x14x00x14x00x00x00x08x00UxbdxebVxc2=jx87x1ex00x00x00!x00x00x00 x00x00 x00x00x00x00x00x01x00 x00x00x00x00x00x00x00TODO11.txtPKx05x06x00x00x00x00x01x00x0 x00x00x00Fx00x00x00x00x00′
Čtení binárních dat do bajtového pole
Tento daný kód demonstruje, jak číst binární data ze souboru do bajtového pole a poté číst binární data do binárního pole tisknout data pomocí smyčky while. Pojďme si kód vysvětlit krok za krokem:
Otevřete binární soubor
Tento řádek otevře binární soubor s názvem string.bin v binárním režimu (‚rb‘). Soubor se otevře pro čtení a objekt souboru se uloží do proměnné ‚soubor‘.
Python3
# Open the binary file> file> => open>(>'string.bin'>,>'rb'>)> |
>
>
Čtení prvních tří bajtů
Tento řádek přečte první tři bajty z binárního souboru a uloží je do proměnné data. Metoda read(3) bajtů ze souboru a podle toho posune ukazatel.
Python3
data>=> file>.read(>3>)> |
odlévat řetězec jako int
>
>
Tisk dat pomocí smyčky while
Smyčka bude číst a tisknout tři bajty najednou, dokud nebude dosaženo konce souboru. Jakmile je dosaženo konce souboru, metoda read() vrátí prázdný objekt bajtů, který se v podmínce cyklu while vyhodnotí jako False a cyklus se ukončí.
Python3
while> data:> >print>(data)> >data>=> file>.read(>3>)> |
>
>
Zavřete binární soubor
Nakonec, když smyčka dokončí čtení a tisk dat, zavřeme binární soubor pomocí metody ‚close()‘, abychom uvolnili systémové prostředky.
Python3
file>.close()> |
>
>
Nyní pomocí výše uvedených kroků v jednom získáme toto:
Výstup kódu bude záviset na obsahu souboru řetězec.bin binární soubor. Kód čte a tiskne data v blocích po třech bytech najednou, dokud není dosaženo konce souboru. Každá iterace smyčky vytiskne tři bajty přečtené ze souboru.
Krajta
# 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()> |
>
>
Pokud je například obsah string.bin b’GeeksForGeeks’ (sekvence šesti bajtů), výstup bude:
Výstup:
b 'Gee' b ' ksf' b 'org' b 'eek' b 's'>
Číst binární soubory v Chunks
Ke čtení dat binárního souboru v blocích používáme smyčku while ke čtení binárních dat ze souboru v blocích zadané velikosti (chunk_size). Cyklus pokračuje, dokud není dosaženo konce souboru a každý blok dat je zpracován odpovídajícím způsobem.
V tomto chunk_size=1024 se používá k určení velikosti každého bloku pro čtení binárního souboru. file = open(binary_file.bin, rb): Tento řádek otevře binární soubor s názvem binary_file.bin v binárním režimu (rb). zatímco True se používá k nastavení nekonečné smyčky, která bude číst soubor po částech, dokud není dosaženo konce souboru. kus = soubor. read(chunk_size) je uvnitř smyčky a metoda read(chunk_size) se používá ke čtení části binárních dat ze souboru.
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}'>)> |
>
>
Výstup kódu bude záviset na obsahu binárního souboru binary_file.bin a zadané velikosti chunk_size, Pokud například soubor obsahuje binární data b Dobrý den, jedná se o binární data!' a velikost chunk_size je nastavena na 10, výstup bude:
Výstup :
Read 10 bytes: b'Hello, thi' Read 10 bytes: b's is binar' Read 7 bytes: b'y data!'>
Výstupy se liší v závislosti na datech binárního souboru, která čteme, a také na velikosti bloku, který určujeme.
Čtěte data binárního souboru do pole
Chcete-li přečíst binární soubor do pole.bin a použít režim wb k zápisu daného binárního souboru. Pole je název souboru. přiřazené pole jako num=[3,6,9,12,18], abyste získali pole v bajtovém formátu. použijte byte array().
K zápisu pole do souboru používáme:
Python3
file>=>open>(>'array'>,>'wb'>)> num>=>[>3>,>6>,>9>,>12>,>18>]> array>=>bytearray(num)> file>.write(array)> file>.close()> |
>
>
Ke čtení zapsaného pole z daného souboru jsme použili stejný soubor, tj. file=open(array, rb). rb se používá k načtení pole ze souboru. List() se používá k vytvoření objektu seznamu. číslo=seznam(soubor. čtení(3)). Chcete-li přečíst bajty ze souboru. používá se read().
Python3
file>=>open>(>'array'>,>'rb'>)> number>=>list>(>file>.read(>3>))> print> (number)> file>.close()> |
>
java cast string to int
>
Výstup:
[3,6,9]>
Čtěte binární soubory v Pythonu pomocí NumPy
Chcete-li načíst binární soubor do pole NumPy, importujte modul NumPy. Dtype je np.unit8, což znamená 8bitové celé číslo bez znaménka. To znamená, že každá položka v poli je 8bitové (1 bajt) celé číslo s hodnotami v rozsahu 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> |
>
>
Nezapomeňte změnit svůj soubor na binární soubory
Výstup :
array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], dtype=np.uint8)>
Související článek
Python | Převést řetězec na bajty