Чтение и запись файлов в Python, является одной из часто используемых задач. При работе вашей программы, вам довольно часто придется производить запись или чтение из файлов. В этой статье, мы разберем открытие файла, чтение, запись, и закрытие. Рассмотрим различные методы работы с файлами.
Открытие файлов в Python
Python по умолчанию предоставляет нам функцию open(), которая предназначена для открытия файла. Рассмотрим пример использования данной функции.
file = open("text.txt") # Открытие файла file = open("C:/text.txt") #Открытие файла по его пути
Существует несколько режимов открытия файла, r — для чтения, w — для записи, a — для добавления. По умолчанию Python использует режим чтение файла
Режим | Описание |
r | Открывает файл для чтения. (по умолчанию) |
w | Открывает файл для записи. Создает новый файл, если он не существует, или усекает файл, если он существует. |
x | Открывает файл для эксклюзивного создания. Если файл уже существует, операция завершается неудачей. |
a | Открывает файл для добавления в конце файла без его усечения. Создает новый файл, если он не существует. |
t | Открывается в текстовом режиме. (по умолчанию) |
b | Открывается в двоичном режиме. |
+ | Открывает файл для обновления (чтения и записи) |
Режим открытия указывается следующим образом:
f = open("text.txt") #Режим r по умолчанию f = open("text.txt", "w")# Режим записи в файл f = open("text.txt", "a") # Режим добавления
Кроме того, надо учитывать кодировку файла, по умолчанию кодировка зависит от вашей операционной системы. Для Windows, кодировка cp1251, а для Linux utf — 8. Соответственно, что бы наша программа вела себя одинаково на разных платформах, лучшим решением будет указание явной кодировки.
file = open("text.txt", "r", encoding = "utf-8" )
Закрытие файла в Python
После того, как мы открыли файл, и выполнили все нужные операции, нам необходимо его закрыть. Для закрытия файла используется функция close().
file = open("text.txt", "r", encoding = "utf-8" ) file.close()
Вышеописанный код, это всего лишь пример работы с файлами, мы не должны забывать, что в ходе работы нашей программы, может произойти что то непредвиденное. Для таких случаев мы используем блок исключений try…finally, о котором мы говорим чуть позже. Ниже пример, с блоком исключений:
try: file = open("text.txt", "r", encoding = "utf-8" ) finally: file.close()
Данная конструкция, гарантирует нам правильное закрытие файла, даже если произойдет ошибка в ходе работы нашей программы.
Лучшим же методом правильного закрытия файла, является конструкция with. Данная конструкция гарантирует нам правильное закрытие файла.
with open("text.txt", "r", encoding = "utf-8" ) as file:
Запись в файл Python
При записи в файл, мы должны открывать наш файл в режим записи w или a. При записи в файл будьте осторожны, режим w перезапишет ваш файл, а режим a добавит новую строку. Запись строк осуществляется с помощью функции write().
with open("text.txt", "r", encoding = "utf-8" ) as file: file.write("Моя первая запись\n") file.write("Еще немного\n")
Приведенный выше код, создаст новый файл text.txt, если его не существует, если существует, то она будет перезаписана. При записи не забывайте про символ переноса на новую строку \n.
Чтение файлов в Python
Что бы открыть файл для чтения, мы используем режим r. Для чтения мы воспользуемся функцией read(size), если параметр size не указан, функция вернет нам всю строку.
file = open("text.txt",'r', encoding = 'utf-8') file.read(3) file.read() Результат: "Моя" "Моя первая запись"
Для чтение содержимого всего файла построчно, мы можем воспользоваться циклом for.
for line in file: print(line,end='') Результат: Моя первая запись Еще немного
Методы работы с файлами
Методы | Описание |
close() | Закрывает открытый файл. |
detach() | |
fileno() | Возвращает целое число (файловый дескриптор) файла. |
flush() | Сбрасывает буфер записи потока файлов. |
isatty() | ВОЗВРАТ True если файловый поток является интерактивным. |
read(n) | Читает самое большее n символы из файла. Читает до конца файла, если он отрицательный или None. |
readable() | ВОЗВРАТ True если файловый поток можно прочитать. |
readline(n=-1) | Считывает и возвращает одну строку из файла |
readlines(n=-1) | Считывает и возвращает список строк из файла |
seek(offset,from=SEEK_SET) | |
seekable() | ВОЗВРАТ True если файловый поток поддерживает произвольный доступ. |
tell() | Возвращает текущее местоположение файла. |
truncate(size=None) | Изменяет размер потока файлов следующим образом size байты. Если size не указан, изменяет размер до текущего местоположения. |
writable() | ВозвращаетTrue, если файловый поток может быть записан. |
write(s) | Записывает строку sв файл и возвращает количество записанных символов. |
writelines(lines) | Записывает список lines в файл. |