Файл — последовательность байтов, хранящаяся во внешней памяти компьютера и имеющая уникальное имя. Python поддерживает множество типов файлов, условно делимых на текстовые и бинарные. Бинарные файлы будут рассмотрены в следующем уроке.
Работа с текстовыми файлами
Текстовые файлы содержат последовательности символов, понятных человеку. Текстовые редакторы позволяют их читать и редактировать. Работа с файлами в Python включает этапы: открытие, операции (чтение, запись, добавление данных) и закрытие. Закрытие файла — обязательный этап.
Открытие файла
Для открытия используется функция open(). Минимальный аргумент — путь к файлу.
Пример:
f = open("Example.txt", "r")
Здесь:
- f — переменная, хранящая файловый объект.
- "Example.txt" — имя файла (в той же директории, что и скрипт).
- "r" — режим открытия (чтение; по умолчанию, если режим не указан).
Второй аргумент open() — mode — определяет режим:
Режим | Описание |
---|---|
r (read) | Чтение. FileNotFoundError, если файл не найден. |
w (write) | Запись. Создаёт файл, если его нет; стирает содержимое, если существует. |
a (append) | Дозапись. Создаёт файл, если его нет; добавляет данные в конец, если существует. |
x (create) | Создание. FileExistsError, если файл уже существует. |
Возможны комбинации:
- + — открытие для чтения и записи (r+, w+, a+).
- t — текстовый файл (по умолчанию).
- b — бинарный файл.
Закрытие файла
Закрытие файла освобождает ресурсы. Выполняется методом close():
f.close()
Менеджер контекста
Для автоматического закрытия используется менеджер контекста with:
with open("Example.txt", "wt") as f:
print(f.closed) # False — файл открыт
print(f.closed) # True — файл закрыт
Запись в файл
Запись осуществляется функцией print() или методом write().
print():
with open("Example.txt", "w") as f:
print("Hello!!!", file=f, end="")
end="" предотвращает добавление символа перевода строки.
write():
with open("Example.txt", "w") as f:
bytes_written = f.write("Python")
print(bytes_written) # Количество записанных байт
write() принимает только строки. Для записи списков чисел требуется преобразование в строки:
s = list(range(10))
with open("Example.txt", "w") as f:
for i in s:
f.write(str(i) + " ") # или использовать print
writelines() записывает список строк:
s = ["A", "B", "C"]
with open("Example.txt", "w") as f:
f.writelines(s)
Чтение из файла
Для чтения используются методы read(), readline() и readlines().
read():
with open("Example.txt", "r") as f:
content = f.read()
print(content) # Всё содержимое
first_five = f.read(5) # Первые 5 символов
print(first_five)
readline():
with open("Example.txt", "r") as f:
line1 = f.readline()
print(line1) # Первая строка
line2 = f.readline()
print(line2) # Вторая строка
readlines():
with open("Example.txt", "r") as f:
lines = f.readlines()
print(lines) # Список строк
Файл — итерируемый объект:
with open("Example.txt", "r", encoding='utf-8') as f:
for line in f:
print(line, end="")
Позиция курсора
Для определения и изменения позиции курсора используются методы tell() и seek():
with open("Example.txt", "r") as f:
f.read(2)
position = f.tell()
print(position) # Текущая позиция
f.seek(4) # Изменение позиции
new_position = f.tell()
print(new_position) # Новая позиция
content = f.read()
print(content) # Чтение с новой позиции
Кодировка
При работе с кириллицей указывайте кодировку:
with open("Example.txt", "r", encoding="utf-8") as f:
# ... чтение файла ...
Рассмотрены основные операции с текстовыми файлами в Python: открытие, чтение, запись и закрытие. Изучение документации поможет глубже освоить возможности работы с файлами.