Продолжаем цикл уроков по работе с файлами в Python. Бинарные файлы — это файлы в которых информация хранится в виде набора байтов. Для того, что бы вы смогли работать с такими типами файлов в Python, необходимо воспользоваться стандартным модулем Pickle. У данного модуля есть два метода:
- dump(obj, file) — предназначен для записи объекта в файл
- load(file) — предназначен для считывания из файла
При работе с бинарными файлами, будь то чтение или запись, нам нужно указывать дополнительный режим b, к уже знакомым нам режимам w или r. Ниже рассмотрим небольшой пример.
import pickle
FILENAME = "user.dat"
name = "Tom"
age = 29
with open(FILENAME, "wb") as file:
pickle.dump(name, file)
pickle.dump(age, file)
with open(FILENAME, "rb") as file:
name = pickle.load(file)
age = pickle.load(file)
print("Имя:", name, "\tВозраст:", age)
Используем функцию dump, и записываем последовательно два объекта. Соответственно для чтения, нам так же нужно воспользоваться функцией load. Как видите, при работе с бинарными файлами в python, нет ничего сложного. Результат выполнения программы:
Имя: Tom Возраст: 29
Примерно таким же образом, мы можем записывать и читать из файла списки, и другие типы. Рассмотрим небольшой пример:
import pickle
FILENAME = "users.dat"
users = [
["Tom", 28, True],
["Alice", 23, False],
["Bob", 34, False]
]
with open(FILENAME, "wb") as file:
pickle.dump(users, file)
with open(FILENAME, "rb") as file:
users_from_file = pickle.load(file)
for user in users_from_file:
print("Имя:", user[0], "\tВозраст:", user[1], "\tЖенат(замужем):", user[2])
- Используем функцию dump
- Записываем с ее помощью данные из переменной users
- Используем функцию load
- Запускаем цикл, и перебираем все данные внутри нашего файла
Результат работы нашей программы:
Имя: Tom Возраст: 28 Женат(замужем): True Имя: Alice Возраст: 23 Женат(замужем): False Имя: Bob Возраст: 34 Женат(замужем): False