Как прочитать файл в Python

При написании кода на Python могут возникать ситуации, когда нужно открыть и прочитать содержимое текстового файла. К счастью, язык Python имеет множество встроенных функций, методов и ключевых слов, с помощью которых можно создать, удалить, записать и прочитать файл.

В этой статье мы расскажем о наиболее распространенных способах чтения текстовых файлов и разберем их на примерах.

В частности, мы рассмотрим, как открыть текстовый файл и как затем прочитать его с помощью функций read(), readline(), readlines() и с применением цикла for. Итак, приступим!

Как открыть текстовый файл с помощью функции open()

Чтобы прочитать файл, его для начала нужно открыть. Для этого существует встроенная функция open(). Cинтаксис функции open() в общем виде выглядит следующим образом:

open("filename", "mode")

Строго говоря, функция open() принимает несколько аргументов, но в данном примере мы сосредоточимся только на двух из них: “filename” (имя файла) и “mode” (режим).

Первым обязательным аргументом, который принимает функция open(), является “filename” (имя файла). Это полный путь к тому файлу, который вы хотите открыть.

При указании пути нужно знать, где этот файл находится в общей структуре папок. Например, если текстовый файл, который мы хотим открыть, находится в той же папке, что и текущий файл с кодом Python, то в filename нужно указать только имя и расширение текстового файла.

Допустим, у нас есть папка с именем projects. Внутри неё есть два файла: main.py — файл, в котором мы пишем код Python, и example.txt — файл, который мы хотели бы открыть. Этот файл имеет следующее содержимое:

I absolutely love coding!
I am learning to code for free with freeCodeCamp!

Оба файла находятся в одной директории, поэтому при использовании функции open() мы будем ссылаться на файл example.txt следующим образом:

open("example.txt")

Второй аргумент, который принимает функция open(), — это “mode” (режим). Он является необязательным и указывает, хотите ли вы просто считать файл («r»), перезаписать его («w») или добавить к нему свой текст («a»).

По умолчанию значение этого аргумента – режим чтения (“r”).

Итак, чтобы открыть и прочитать файл example.txt, можно дополнительно использовать параметр «r» для явного указания режима, который мы хотим использовать:

open("example.txt", mode="r")

При этом совсем не обязательно использовать ключевое слово mode. Его можно просто пропустить, оставив флаг “r”, и результат будет точно таким же:

open("example.txt","r")

И наконец, флаг “r” можно вообще опустить, так как режим чтения является режимом по умолчанию.

open("example.txt")

При запуске кода из этого примера абсолютно ничего не происходит. Мы выполнили только первый шаг  — открыли текстовый файл, но пока не считали его и не увидели его содержимое.

Как прочитать файл с помощью метода read()

Перед тем как прочитать файл example.txt, давайте сначала сохраним код, который мы написали в предыдущем разделе, в переменной с именем file:

file = open("example.txt")

Затем вызовем метод read() для переменной file и выведем полученный результат в консоль:

file = open("example.txt")

print(file.read())

# Результат

# I absolutely love coding!
# I am learning to code for free with freeCodeCamp!

Теперь мы можем прочитать содержимое файла example.txt!

Метод read() считывает все содержимое как одну строку. Это может быть удобно при работе с небольшими файлами, в которых не так много содержимого.

Однако, в приведенном выше коде кое-чего не хватает. Как только чтение файла завершено, его необходимо закрыть. Для этого существует метод close(). Важно не забыть это сделать, в противном случае могут произойти ошибки в программе.

file = open("example.txt")

print(file.read())

# Закрываем файл
file.close()

Итак, закрытие файла является хорошей практикой, но это очень легко забыть сделать. Поэтому есть альтернативный способ открытия файлов. Ключевое слово with обеспечивает автоматическое закрытие файла после выполнения кода.

Общий синтаксис конструкции with при использовании вместе с функцией open() имеет следующий вид:

with open("filename") as variable:
    # что-нибудь сделать с переменной variable

Итак, код из предыдущего примера можно переписать с использованием ключевого слова with следующим образом:

with open("example.txt") as file:
    print(file.read())
  
# Результат

# I absolutely love coding!
# I am learning to code for free with freeCodeCamp!

Как прочитать файл с помощью метода readline()

Если нужно прочитать только одну строку из текстового файла, используется метод readline():

with open("example.txt") as file:
  print(file.readline())
  
# Результат

# I absolutely love coding!

Текстовый файл example.txt содержит две строки, но метод readline() считывает из файла и возвращает только одну строку.

Также метод readline() добавляет в конце символ новой строки.

Кроме того, вы можете передать в метод readline() аргумент, который будет определять длину считываемый строки.

with open("example.txt") as file:
  print(file.readline(10))

# Результат

# I absolute

Как прочитать файл с помощью метода readlines()

Метод readlines() считывает все строки из файла, проходя по нему строка за строкой. Затем он возвращает список из строк:

with open("example.txt") as file:
  print(file.readlines())
  
# Результат

# ['I absolutely love coding!\n', 'I am learning to code for free with freeCodeCamp!']

Метод readlines() считывает все строки сразу и сохраняет каждую строку из текстового файла как отдельный элемент списка. Этот метод тоже добавляет в конце каждой строки символ переноса строки \n.

Как прочитать файл с помощью цикла for

Альтернативным способом построчного чтения файла в Python является использование цикла for. Данный вариант, вообще говоря, является наиболее питоническим подходом к данной задаче.

with open("example.txt") as file:
  for item in file:
    print(item)
    
# Результат

# I absolutely love coding!

# I am learning to code for free with freeCodeCamp!

Как можно видеть, функция open() возвращает итерируемый объект. Цикл for используется вместе с ключевым словом in — они выполняют итерацию по возвращаемому итерируемому файловому объекту и считывают каждую строку внутри него.

Заключение

Надеюсь, эта статья помогла вам понять, как прочитать файл в Python, используя методы read(), readline() и readlines() и цикл for.

Спасибо за внимание и успешного кодинга!

Перевод статьи Dionysia Lemonaki “How to Read a File Line by Line in Python”.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *