В данном руководстве по Python мы научимся работать с файлами с помощью различных операций. Давайте рассмотрим методы чтения и записи в файлы, а также их удаление.
Работа с файлами
Последовательность работы:
- Открыть файл.
- Принять ввод из этого файла и записать вывод в этот файл.
- Закрыть файл.
Открытие файла с помощью функции open()
Первый шаг в работе с файлами в Python — научиться открывать файл. Вы можете открывать файлы с помощью метода open()
.
Функция open()
в Python принимает два аргумента.
- Первое — это имя файла с полным путем.
- Второе — режим открытия файла. Вот некоторые из распространенных режимов чтения файлов:
r | Только для чтения. |
w | Только для записи. Создаст новый файл, если не найдет с указанным именем. |
rb | Только для чтения (бинарный). |
wb | Только для записи (бинарный). Создаст новый файл, если не найдет с указанным именем. |
r+ | Для чтения и записи. |
rb+ | Для чтения и записи (бинарный). |
w+ | Для чтения и записи. Создаст новый файл для записи, если не найдет с указанным именем. |
wb+ | Для чтения и записи (бинарный). Создаст новый файл для записи, если не найдет с указанным именем. |
a | Откроет для добавления нового содержимого. Создаст новый файл для записи, если не найдет с указанным именем. |
a+ | Откроет для добавления нового содержимого. Создаст новый файл для чтения записи, если не найдет с указанным именем. |
ab | Откроет для добавления нового содержимого (бинарный). Создаст новый файл для записи, если не найдет с указанным именем. |
ab+ | Откроет для добавления нового содержимого (бинарный). Создаст новый файл для чтения записи, если не найдет с указанным именем. |
Давайте создадим файл file.txt в каталоге с нашим main.py. Впишем тестовые данные в file.txt и попробуем попрактиковаться:

Способы открытия/закрытия (важно) файла
Способ первый - открыть файл с помощью open()
и закрыть после выполнения кода с помощью close()
text_file = open(file='file.txt', mode='r', encoding='utf-8')
for text in text_file.readlines():
print(text)
text_file.close()
После закрытия этот файл нельзя будет использовать до тех пор, пока заново его не открыть.
Способ второй - вы также можете написать try/finally
, который гарантирует, что если операции с файлом приведут к исключениям после открытия файла, он автоматически закроется.
text_file = open(file='file.txt', mode='r', encoding='utf-8')
try:
for text in text_file.readlines():
print(text)
finally:
text_file.close()
Способ третий - конструкция with
Другой подход заключается в использовании оператора with
, который упрощает обработку исключений за счет инкапсуляции начальных операций, а также закрытия и очистки задач.
В этом случае оператор close()
не нужен, потому что with
автоматически закроет файл.
with open(file='file.txt', mode='r', encoding='utf-8') as text_file:
for text in text_file.readlines():
print(text)
Результат из консоли:
Сегодня мы тестируем
А что тестируем?
Операцию над файлами.
Чтение и запись файлов
Python предлагает множество методов чтения и записи файлов, в которых каждая функция ведет себя по-разному.
Следует отметить один важный момент — режим работы с файлами.
Чтобы прочитать файл, вы должны открыть его в режиме чтения или записи. Однако для записи в файл в Python файл должен быть открыт в режиме записи.
Вот некоторые функции Python, которые могут читать и записывать файлы:
Методы файла в Python
file.close() | закрывает открытый файл |
file.fileno() | возвращает целочисленный дескриптор файла |
file.flush() | очищает внутренний буфер |
file.isatty() | возвращает True, если файл привязан к терминалу |
file.next() | возвращает следующую строку файла |
file.read(n) | чтение первых n символов файла |
file.readline() | читает одну строчку строки или файла |
file.readlines() | читает и возвращает список всех строк в файле |
file.seek(offset[,whene]) | устанавливает текущую позицию в файле |
file.seekable() | проверяет, поддерживает ли файл случайный доступ. Возвращает True , если да |
file.tell() | возвращает текущую позицию в файле |
file.truncate(n) | уменьшает размер файл. Если n указала, то файл обрезается до n байт, если нет — до текущей позиции |
file.write(str) | добавляет строку str в файл |
file.writelines(sequence) | добавляет последовательность строк в файл |
Давайте попробуем записать что-нибудь в наш файл:
text_file = open(file='file.txt', mode='w', encoding='utf-8')
# Список из слов
word_list = []
# Цикл записи строк
for i in range(1, 5):
print('Введите данные для записи в файл: ')
line = input()
word_list.append(line)
# Запись введенных данных
text_file.writelines(word_list)
# Закрываем файл
text_file.close()
Результат:
Введите данные для записи в файл:
Тест 1
Введите данные для записи в файл:
Тест 2
Введите данные для записи в файл:
Тест 3
Введите данные для записи в файл:
Тест 4
Содержимое:

А давайте прочитаем не весь файл?
text_file = open(file='file.txt', mode='r', encoding='utf-8')
print(text_file.read(10))
# Закрываем файл
text_file.close()
Где 10 - количество символов читаемых из файла.
Результат:
Сегодня мы
Текущая позиция в файлах Python
В Python можно узнать текущую позицию в файле благодаря функции tell()
. Точно так же вы можете изменить текущую позицию с помощью команды seek()
text_file = open(file='file.txt', mode='r', encoding='utf-8')
print(text_file.read(8))
print('Position: ', text_file.tell())
text_file.seek(0, 0)
# Закрываем файл
text_file.close()
Результат:
Напоминаю, что UTF-8 – кодировка символов юникод в двоичном виде.
Сегодня
Position: 15
В Windows по умолчанию: windows-1251
Сегодня
Position: 8
Поэтому и позиции разные.
Переименование файлов в Python
Функция rename()
используется для переименовывания файлов в Python. Для ее использования сперва нужно импортировать модуль os
.
Пример:
import os
os.rename(src, dest)
Пояснения:
- src - файл, который нужно переименовать
- dest - новое имя файла
Например:
import os
os.rename('file.txt', 'nth.txt')
Удаление файла
Модуль os позволяет нам удалить файл с помощью os.remove()
, os.unlink()
import os
os.unlink('file.txt')
os.remove('file.txt')