Jak czytać pliki binarne w Pythonie

How Read Binary Files Python



Plik zawierający dane binarne nazywany jest plikiem binarnym. Wszelkie sformatowane lub niesformatowane dane binarne są przechowywane w pliku binarnym, a plik ten nie jest czytelny dla człowieka i jest używany bezpośrednio przez komputer. Gdy plik binarny jest wymagany do odczytu lub przeniesienia z jednej lokalizacji do innej, zawartość pliku jest konwertowana lub kodowana do formatu czytelnego dla człowieka. Rozszerzenie pliku binarnego to .bin. Zawartość pliku binarnego można odczytać za pomocą wbudowanej funkcji lub modułu. W tym samouczku pokazano różne sposoby odczytywania plików binarnych w Pythonie.

Warunek wstępny:

Przed sprawdzeniem przykładów z tego samouczka, lepiej utworzyć jeden lub więcej plików binarnych do wykorzystania w przykładowym skrypcie. Poniżej podano skrypt dwóch plików Pythona do tworzenia dwóch plików binarnych. Plik binary1.py utworzy plik binarny o nazwie string.bin który będzie zawierał dane ciągu, a plik binary2.py utworzy plik binarny o nazwie number_list.bin który będzie zawierał listę danych liczbowych.







Binarny1.py

# Otwórz program obsługi plików, aby utworzyć plik binarny

obsługa_plików= otwarty('string.bin', „wb”)

# Dodaj dwie linie tekstu do pliku binarnego

obsługa_plików.pisać(b'Witamy w LinuxHint. Naucz się programowania w Pythonie.')

# Zamknij program obsługi plików

obsługa_plików.blisko()

Binary2.py

# Otwórz program obsługi plików, aby utworzyć plik binarny

plik=otwarty(„lista_numerów.bin”,„wb”)

# Zadeklaruj listę wartości liczbowych

liczby=[10,30,Cztery pięć,60,70,85,99]

# Konwertuj listę na tablicę

barray=tablica bajtowa(liczby)

# Zapisz tablicę do pliku

plik.pisać(barray)

plik.blisko()

Przykład-1: Wczytaj binarny plik danych ciągu do tablicy bajtów

W Pythonie istnieje wiele sposobów odczytywania pliku binarnego. Możesz jednocześnie odczytać określoną liczbę bajtów lub pełną zawartość pliku binarnego. Utwórz plik Pythona za pomocą następującego skryptu. ten funkcja open() używał do otwierania string.bin do czytania. ten funkcja read() został użyty do odczytania 7 znaków z pliku w każdej iteracji pętli while i print. Następnie funkcja read() został użyty bez żadnego argumentu do odczytania pełnej zawartości pliku binarnego, który zostanie wydrukowany później.



# Otwórz plik binarny do odczytu

obsługa_plików= otwarty('string.bin', „rb”)

# Odczytaj pierwsze trzy bajty z pliku binarnego

bajt_danych=obsługa_plików.czytać(7)

wydrukować('Drukuj trzy znaki w każdej iteracji:')

# Wykonaj iterację pętli, aby odczytać pozostałą część pliku

podczasbajt_danych:

wydrukować(bajt_danych)

bajt_danych=obsługa_plików.czytać(7)


# Odczytaj cały plik jako jednobajtowy ciąg

z otwarty('string.bin', „rb”) jakfh:

zadowolony=fh.czytać()

wydrukować('Wydrukuj pełną zawartość pliku binarnego:')

wydrukować(zadowolony)

Wyjście:

Poniższe dane wyjściowe pojawią się po wykonaniu powyższego skryptu.







Przykład-2: Wczytaj binarny plik danych łańcuchowych do tablicy

Utwórz plik Pythona za pomocą następującego skryptu, aby odczytać plik binarny o nazwie number_list.bin utworzone wcześniej. Ten plik binarny zawiera listę danych liczbowych. Podobnie jak w poprzednim przykładzie, funkcja open() użył otwartego pliku binarnego do odczytu w skrypcie. Następnie pierwsze 5 liczb zostanie odczytanych z pliku binarnego i przekonwertowanych na listę przed wydrukowaniem.

# Otwórz plik binarny do odczytu

plik = otwarty(„lista_numerów.bin”, „rb”)

# Odczytaj pierwsze pięć liczb na listę

numer= lista(plik.czytać(5))

# Wydrukuj listę

wydrukować(numer)

# Zamknij plik

plik.blisko()

Wyjście:

Poniższe dane wyjściowe pojawią się po wykonaniu powyższego skryptu. Plik binarny zawiera 7 liczb, a na wyjściu wydrukowano pierwszych pięć liczb.



Przykład-3: Odczytaj plik binarny za pomocą NumPy

Sposoby tworzenia pliku binarnego za pomocą Tablica NumPy i wczytaj zawartość pliku binarnego używając do listy używając Moduł NumPy pokazane w tej części samouczka. Przed sprawdzeniem skryptu podanego poniżej, musisz zainstalować Moduł NumPy wykonując polecenie z terminala lub instalując Pakiet NumPy w edytorze Pythona, gdzie skrypt zostanie wykonany. ten funkcja tofile() służy do tworzenia pliku tekstowego lub binarnego, a funkcja fromfile() służy do tworzenia tablicy poprzez odczytanie pliku tekstowego lub binarnego.

Składnia tofile():

ndarray.do pliku(plik,Sep='',format='%s')

Pierwszy argument jest obowiązkowy i przyjmuje nazwę pliku, ciąg lub ścieżkę jako wartość. Plik zostanie utworzony, jeśli w tym argumencie zostanie podana nazwa pliku. Drugi argument jest opcjonalny i służy do oddzielania elementów tablicy. Trzeci argument jest również opcjonalny i służy do formatowania wyjścia pliku tekstowego.

Składnia formfile():

numpy.z pliku(plik,dtype=pływak,liczyć=-1,Sep='',zrównoważyć=0,*,lubić=Nic)

Pierwszy argument jest obowiązkowy i przyjmuje nazwę pliku, ciąg lub ścieżkę jako wartość. Zawartość pliku zostanie odczytana, jeśli w tym argumencie zostanie podana nazwa pliku. ten dtype definiuje typ danych zwróconej tablicy. Licznik służy do zliczania ilości sztuk. Celem Sep jest oddzielenie elementów tekstu lub tablicy. Offset jest używany do określenia aktualnej pozycji pliku. Ostatni argument jest używany do utworzenia obiektu tablicy, który nie jest Tablica NumPy .

Utwórz plik Pythona za pomocą następującego skryptu, aby utworzyć plik binarny za pomocą Tablica NumPy oraz przeczytaj i wydrukuj zawartość pliku binarnego.

# Importuj moduł NumPy

importnumpyjaknp

# Zadeklaruj numpy array

ntablica=np.szyk([3. 4, 89, 30, Cztery pięć, 90, jedenaście])

# Utwórz plik binarny z tablicy numpy

ntablica.do pliku(„lista.bin”)

# Wydrukuj dane z pliku binarnego

wydrukować(np.z pliku(„lista.bin”,dtype=np.int64))

Wyjście:

Poniższe dane wyjściowe pojawią się po wykonaniu powyższego skryptu.

Wniosek:

W tym samouczku pokazano trzy różne sposoby odczytywania pliku binarnego na prostych przykładach. Pierwszy przykład zwrócił zawartość pliku binarnego jako tablicę bajtów. Drugi przykład zwrócił zawartość pliku binarnego jako listę. Ostatni przykład zwrócił również zawartość pliku binarnego jako listę.