Бінарні файли Python

Бінарні файли на відміну від текстових зберігають інформацію у вигляді набору байт. Для роботи з ними в Python необхідний вбудований модуль pickle. Цей модуль надає два методи:

  • dump(obj, file): записує об'єкт obj в бінарний файл file
  • load (file): зчитує дані з бінарного файлу в об'єкт

При відкритті бінарного файлу на читання або запис також треба враховувати, що нам потрібно застосовувати режим "b" в доповнення до режиму запису ("w") або читання ("r"). Припустимо, треба треба зберегти два об'єкти:

import pickle     

FILENAME = " user.dat"     

name = "Tom"  
age = 19     

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 ми можемо прочитати ці об'єкти. Консольний вивід програми:

Ім'я: Tom Вік: 28

Подібним чином ми можемо зберігати і зчитувати з файлу набори об'єктів:

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, той самий об'єкт буде повернутий функцією load при зчитуванні файлу.

Консольний вивід:

Ім'я: Tom Вік: 28 Одружений (заміжня): True
Ім'я: Alice Вік: 23 Одружений (заміжня): False
Ім'я: Bob Вік: 34 Одружений(заміжня): False