Файл — це контейнер для зберігання даних. Коли ми хочемо читати з файлу або записувати в нього, нам потрібно спочатку його відкрити. Після того, як ми закінчили читання/запис, нам потрібно закрити файл, щоб звільнити ресурси, пов’язані з ним.
Таким чином, в Python операції з файлами виконуються в наступному порядку:
відкрити файл;
читання або запис;
закрити файл.
Відкрити файл в Python
В Python для відкриття файлів використовується метод open(). Наприклад, у нас є файл test.txt з наступним вмістом:

Тепер спробуємо відкрити цей файл за допомогою функції open():
|
1 2 |
# Відкриваємо файл у поточному каталозі file1 = open("test.txt") |
Тут ми створили файловий об’єкт з ім’ям file1. Його можна використати для роботи з файлами та каталогами.
За замовчуванням файли відкриті в режимі читання (не можуть бути змінені). Вищенаведений код рівнозначний:
|
1 |
file1 = open("test.txt", "r") |
Тут "r" означає, що файл відкритий для читання.
| Режим | Опис |
| r | Відкрити файл для читання (використовується за замовчуванням). |
| w | Відкрити файл для запису. Створює новий файл, якщо він не існує, або видаляє вміст файлу, якщо існує. |
| x | Відкрити файл для ексклюзивного створення. Якщо файл вже існує, операція завершується невдало. |
| a | Відкрити файл для додавання даних у кінець файлу без видалення поточного вмісту. Створює новий файл, якщо він не існує. |
| t | Відкрити файл в текстовому режимі (використовується за замовчуванням). |
| b | Відкрити файл у двійковому режимі. |
| + | Відкрити файл для оновлення (читання та запис). |
Ось кілька простих прикладів того, як відкрити файл у різних режимах:
|
1 2 3 |
file1 = open("test.txt") # рівнозначний 'r' або 'rt' file1 = open("test.txt",'w') # запис у текстовому режимі file1 = open("img.bmp",'r+b') # читання та запис у двійковому режимі |
Читання файлів в Python
В Python для читання файлів використовується метод read(). Наприклад:
|
1 2 3 4 5 6 |
# Відкриваємо файл file1 = open("test.txt", "r") # Читаємо файл read_content = file1.read() print(read_content) |
Результат:
This is a test file.
Hello from the test file.
Зверніть увагу на наступний рядок коду:
|
1 |
read_content = file1.read() |
Тут file1.read() читає файл test.txt та зберігає його в змінну read_content.
Закрити файл в Python
Коли ми перестали виконувати операції з файлом, нам потрібно його правильно закрити. Закриття файлу звільняє ресурси, які були використані для роботи з ним. Це робиться за допомогою методу close(). Наприклад:
|
1 2 3 4 5 6 7 8 9 |
# Відкриваємо файл file1 = open("test.txt", "r") # Читаємо файл read_content = file1.read() print(read_content) # Закриваємо файл file1.close() |
Результат:
This is a test file.
Hello from the test file
Тут ми використали метод close() для закриття файлу. Після виконання операції з файлом ми завжди маємо закривати файл; це важливий момент.
Обробка винятків у файлах
Якщо під час виконання будь-якої операції з файлом виникає виняток, програма завершує виконання, не закриваючи при цьому файли. Одним із рішень в цій ситуації є використання блоку try...finally. Наприклад:
|
1 2 3 4 5 6 7 8 |
try: file1 = open("test.txt", "r") read_content = file1.read() print(read_content) finally: # Закриваємо файл file1.close() |
Тут ми закрили файл у блоці finally, оскільки блок finally завжди виконується, то файл буде закритий, навіть якщо згенерується виняток.
Використання синтаксису with…open
В Python ми можемо використовувати синтаксис with...open для автоматичного закриття файлу. Наприклад:
|
1 2 3 |
with open("test.txt", "r") as file1: read_content = file1.read() print(read_content) |
Примітка: Оскільки в цьому варіанті не потрібно турбуватися про закриття файлу, рекомендується завжди використовувати синтаксис with...open.
Запис у файл в Python
При записі у файл необхідно пам’ятати дві речі:
Якщо ми намагаємося відкрити неіснуючий файл, створюється новий файл.
Якщо файл уже існує, його вміст видаляється, а до файлу додається новий вміст.
Для того, щоб записати дані у файл в Python, нам потрібно відкрити його в режимі запису, вказавши "w" у функції open() як другий аргумент.
Припустимо, ми не маємо файлу з ім’ям test2.txt. Подивимося, що станеться, якщо виконати запис у файл test2.txt:
|
1 2 3 4 5 |
with open('test2.txt', 'w') as file2: # Виконуємо запис у файл test2.txt file2.write('Programming is Fun.') file2.write('Python for beginners') |
Тут створюється новий файл test2.txt із вмістом, вказаним всередині методів write():

Методи для роботи з файлами в Python
| Метод | Опис |
| close() | Закриває відкритий файл. Нічого не відбувається, якщо файл вже закритий. |
| detach() | Відокремлює базовий двійковий буфер від TextIOBase та повертає його. |
| fileno() | Повертає ціле число файлу (файловий дескриптор). |
| flush() | Очищає буфер запису у файловому потоці. |
| isatty() | Повертає True, якщо потік файлів є інтерактивним. |
| read(n) | Зчитує не більше n символів з файлу. Виконує читання до кінця файлу, якщо n є від’ємним або None. |
| readable() | Повертає True, якщо з файлового потоку можна зчитати дані. |
| readline(n=-1) | Зчитує та повертає один рядок з файлу. Зчитує не більше n байтів, якщо вказано. |
| readlines(n=-1) | Зчитує та повертає список рядків з файлу. Зчитує не більше n байтів/символів, якщо вказано. |
| seek(offset,from=SEEK_SET) | Змінює позицію файлу на offset байтів, відносно from (start, current, end). |
| seekable() | Повертає True, якщо файловий потік підтримує довільний доступ. |
| tell() | Повертає ціле число, що становить поточну позицію файлового об’єкта. |
| truncate(size=None) | Змінює розмір файлового потоку до size байтів. Якщо розмір не вказано, розмір змінюється щодо поточного розташування. |
| writable() | Повертає True, якщо у файловий потік можна здійснити запис. |
| write(s) | Записує рядок (s) у файл та повертає кількість записаних символів. |
| writelines(lines) | Записує список рядків (lines) у файл. |

(32 оцінок, середня: 4,81 з 5)