5.1 Dane binarne
Praca z plikami binarnymi w Pythonie trochę się różni od pracy z plikami tekstowymi, ponieważ pliki binarne zawierają dane w formacie, który nie jest przeznaczony do odczytu przez człowieka. Zamiast stringów, pliki binarne operują na bajtach.
Do pracy z plikami binarnymi używa się funkcji open()
z określeniem trybu, zawierającego literę 'b'
(na przykład, 'rb'
do odczytu, 'wb'
do zapisu i tak dalej).
Przykłady otwierania plików binarnych:
- Odczyt:
'rb'
- Zapis:
'wb'
- Dodawanie:
'ab'
- Odczyt i zapis:
'r+b'
,'w+b'
,'a+b'
Przykład:
file = open('example.bin', 'rb')
content = file.read()
print(content)
file.close()
Zmienna 'content'
będzie zawierała tablicę bajtów.
Dane binarne (bajty) to najniższy, najbardziej podstawowy poziom reprezentacji danych. Jakiekolwiek dane mogą być odczytane jako binarne.
To znaczy, że plik tekstowy zawsze można odczytać jako binarny, ale nie każdy plik binarny można zinterpretować jako tekstowy.
5.2 Odczyt plików binarnych
Odczyt całej zawartości pliku
Metoda read()
odczytuje całą zawartość pliku w bajtach.
Przykład:
file = open('example.bin', 'rb')
content = file.read()
print(content)
file.close()
Odczyt określonej liczby bajtów
Metoda read(n)
odczytuje n
bajtów z pliku.
Przykład:
file = open('example.bin', 'rb')
content = file.read(10) # Czyta pierwsze 10 bajtów
print(content)
file.close()
Odczyt liniowo
Metoda readline()
odczytuje jedną linię z pliku. W przypadku plików binarnych linia kończy się znakiem nowej linii (\n)
.
Przykład:
file = open('example.bin', 'rb')
line = file.readline()
print(line)
file.close()
Odczyt wszystkich linii
Metoda readlines()
odczytuje wszystkie linie z pliku i zwraca je w postaci listy bajtów.
Przykład:
file = open('example.bin', 'rb')
lines = file.readlines()
for line in lines:
print(line)
file.close()
Metody do pracy z liniami mogą nie działać poprawnie, jeśli czytasz plik, który nie zawiera tekstu: na przykład, archiwum, obrazek lub wideo.
5.3 Zapis danych binarnych
Metoda write()
zapisuje bajty do pliku. Dane do zapisu muszą być w formie bajtów (bytes)
.
Odczyt i zapis obrazów
Odczyt obrazka z pliku i zapis go do innego pliku.
# Odczyt obrazka
with open('input_image.jpg', 'rb') as infile:
image_data = infile.read()
# Zapis obrazka
with open('output_image.jpg', 'wb') as outfile:
outfile.write(image_data)
Można również zapisywać dane tekstowe:
Przykład:
data = b"Hello, World!"
lines = [b"First line.\n", b"Second line.\n", b"Third line.\n"]
file = open('example.bin', 'wb')
file.write(data)
file.writelines(lines)
file.close()
GO TO FULL VERSION