Робота з файлами в Python. Читання та запис

 29619

Файл — це контейнер для зберігання даних. Коли ми хочемо читати з файлу або записувати в нього, нам потрібно спочатку його відкрити. Після того, як ми закінчили читання/запис, нам потрібно закрити файл, щоб звільнити ресурси, пов’язані з ним.

Таким чином, в Python операції з файлами виконуються в наступному порядку:

   відкрити файл;

   читання або запис;

   закрити файл.

Відкрити файл в Python

В Python для відкриття файлів використовується метод open(). Наприклад, у нас є файл test.txt з наступним вмістом:

Тепер спробуємо відкрити цей файл за допомогою функції open():

Тут ми створили файловий об’єкт з ім’ям file1. Його можна використати для роботи з файлами та каталогами.

За замовчуванням файли відкриті в режимі читання (не можуть бути змінені). Вищенаведений код рівнозначний:

Тут "r" означає, що файл відкритий для читання.

Режим Опис
r Відкрити файл для читання (використовується за замовчуванням).
w Відкрити файл для запису. Створює новий файл, якщо він не існує, або видаляє вміст файлу, якщо існує.
x Відкрити файл для ексклюзивного створення. Якщо файл вже існує, операція завершується невдало.
a Відкрити файл для додавання даних у кінець файлу без видалення поточного вмісту. Створює новий файл, якщо він не існує.
t Відкрити файл в текстовому режимі (використовується за замовчуванням).
b Відкрити файл у двійковому режимі.
+ Відкрити файл для оновлення (читання та запис).

Ось кілька простих прикладів того, як відкрити файл у різних режимах:

Читання файлів в Python

В Python для читання файлів використовується метод read(). Наприклад:

Результат:

This is a test file.
Hello from the test file.

Зверніть увагу на наступний рядок коду:

Тут file1.read() читає файл test.txt та зберігає його в змінну read_content.

Закрити файл в Python

Коли ми перестали виконувати операції з файлом, нам потрібно його правильно закрити. Закриття файлу звільняє ресурси, які були використані для роботи з ним. Це робиться за допомогою методу close(). Наприклад:

Результат:

This is a test file.
Hello from the test file

Тут ми використали метод close() для закриття файлу. Після виконання операції з файлом ми завжди маємо закривати файл; це важливий момент.

Обробка винятків у файлах

Якщо під час виконання будь-якої операції з файлом виникає виняток, програма завершує виконання, не закриваючи при цьому файли. Одним із рішень в цій ситуації є використання блоку try...finally. Наприклад:

Тут ми закрили файл у блоці finally, оскільки блок finally завжди виконується, то файл буде закритий, навіть якщо згенерується виняток.

Використання синтаксису with…open

В Python ми можемо використовувати синтаксис with...open для автоматичного закриття файлу. Наприклад:

Примітка: Оскільки в цьому варіанті не потрібно турбуватися про закриття файлу, рекомендується завжди використовувати синтаксис with...open.

Запис у файл в Python

При записі у файл необхідно пам’ятати дві речі:

   Якщо ми намагаємося відкрити неіснуючий файл, створюється новий файл.

   Якщо файл уже існує, його вміст видаляється, а до файлу додається новий вміст.

Для того, щоб записати дані у файл в Python, нам потрібно відкрити його в режимі запису, вказавши "w" у функції open() як другий аргумент.

Припустимо, ми не маємо файлу з ім’ям test2.txt. Подивимося, що станеться, якщо виконати запис у файл test2.txt:

Тут створюється новий файл 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) у файл.

Оцінити статтю:

1 Зірка2 Зірки3 Зірки4 Зірки5 Зірок (32 оцінок, середня: 4,81 з 5)
Завантаження...

Залишити відповідь

Ваш E-mail не буде опублікований. Обов'язкові поля відмічені *