Олег Марков
Работа с байтами в Python
Введение
Байты (bytes) — это фундаментальный тип данных в Python для работы с бинарной информацией. Они используются для чтения и записи файлов, сетевого взаимодействия, обработки кодировок и передачи данных между системами.
В этой статье мы разберемся, как создавать и преобразовывать байтовые объекты, кодировать и декодировать строки, работать с бинарными данными и использовать встроенные методы Python для эффективной работы с байтами.
Если вы хотите детальнее изучить работу с бинарными и текстовыми данными в Python — приходите на наш курс Основы Python. На курсе 209 уроков и 34 упражнения, AI-тренажеры для практики с кодом и задачами 24/7, решение задач с живым ревью наставника, еженедельные встречи с менторами.
Создание байтовых объектов
# Прямое создание
b1 = b"Hello"
print(b1) # b'Hello'
# Из списка чисел (значения 0-255)
b2 = bytes([72, 101, 108, 108, 111])
print(b2) # b'Hello'
# Из строки с указанием кодировки
b3 = "Привет".encode("utf-8")
print(b3) # b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82'Декодирование байтов
Для преобразования байтов обратно в строки используется decode:
text = b3.decode("utf-8")
print(text) # ПриветНеправильная кодировка вызовет UnicodeDecodeError, поэтому важно использовать правильный формат.
Работа с отдельными байтами
Байтовый объект ведет себя как последовательность чисел:
b = b"Python"
print(b[0]) # 80 (ASCII код символа 'P')
print(b[:3]) # b'Pyt'Можно применять срезы и конкатенацию:
b_new = b[:3] + b" 3.11"
print(b_new) # b'Pyt 3.11'Изменяемые байтовые массивы — bytearray
bytes неизменяемы, но есть bytearray для модификаций:
ba = bytearray(b"Hello")
ba[0] = 74 # ASCII код 'J'
print(ba) # bytearray(b'Jello')
ba.append(33)
print(ba) # bytearray(b'Jello!')Чтение и запись бинарных файлов
# Запись байтов в файл
with open("example.bin", "wb") as f:
f.write(b"Python 3.11")
# Чтение байтов из файла
with open("example.bin", "rb") as f:
data = f.read()
print(data) # b'Python 3.11'Частые ошибки
- Попытка изменить объект
bytesнапрямую →TypeError. - Декодирование байтов с неправильной кодировкой →
UnicodeDecodeError. - Присваивание чисел >255 в
bytearray→ValueError.
Часто задаваемые вопросы
В чем разница
bytesиbytearray?bytes— неизменяемый тип,bytearray— изменяемый, поддерживает методы.append(),.extend()и модификацию по индексу.Как преобразовать список чисел в байты?
numbers = [65, 66, 67]
b = bytes(numbers)- Можно ли конкатенировать
bytesиstr? Нет, сначала строку нужно закодировать в байты:
b = b"Hello" + " World".encode("utf-8")- Как получить длину байтового объекта?
len(b) # количество байтовЗаключение
Байты и bytearray — основа работы с бинарными данными в Python, необходимая для чтения и записи файлов, сетевого взаимодействия и обработки текстовых кодировок. Правильное кодирование, декодирование и использование методов позволяет эффективно управлять бинарной информацией и интегрировать её с текстовыми данными.
Для системного изучения работы с байтами, кодировками и текстовыми данными в Python рекомендую пройти курс Основы Python. В первых 3 модулях уже доступно бесплатное содержание — начните погружаться в мир Python прямо сегодня.
Постройте личный план изучения Python до уровня Middle — бесплатно!
Python — часть карты развития Backend
100+ шагов развития
30 бесплатных лекций
300 бонусных рублей на счет
Все гайды по Python
Лучшие курсы по теме

Основы Python
Антон Ларичев
Nest.js с нуля
Антон Ларичев