Python прочитать файл построчно

Обновлено: 17.07.2024

В данной статье мы рассмотрим встроенные средства python для работы с файлами: открытие / закрытие, чтение и запись.

Итак, начнем. Прежде, чем работать с файлом, его надо открыть. С этим замечательно справится встроенная функция open:

У функции open много параметров, они указаны в статье "Встроенные функции", нам пока важны 3 аргумента: первый, это имя файла. Путь к файлу может быть относительным или абсолютным. Второй аргумент, это режим, в котором мы будем открывать файл.

РежимОбозначение
'r'открытие на чтение (является значением по умолчанию).
'w'открытие на запись, содержимое файла удаляется, если файла не существует, создается новый.
'x'открытие на запись, если файла не существует, иначе исключение.
'a'открытие на дозапись, информация добавляется в конец файла.
'b'открытие в двоичном режиме.
't'открытие в текстовом режиме (является значением по умолчанию).
'+'открытие на чтение и запись

Режимы могут быть объединены, то есть, к примеру, 'rb' - чтение в двоичном режиме. По умолчанию режим равен 'rt'.

И последний аргумент, encoding, нужен только в текстовом режиме чтения файла. Этот аргумент задает кодировку.

Чтение из файла

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

Первый - метод read, читающий весь файл целиком, если был вызван без аргументов, и n символов, если был вызван с аргументом (целым числом n).

Ещё один способ сделать это - прочитать файл построчно, воспользовавшись циклом for:

Запись в файл

Теперь рассмотрим запись в файл. Попробуем записать в файл вот такой вот список:

Откроем файл на запись:

Запись в файл осуществляется с помощью метода write:

Для тех, кто не понял, что это за цифры, поясню: метод write возвращает число записанных символов.

После окончания работы с файлом его обязательно нужно закрыть с помощью метода close:

Теперь попробуем воссоздать этот список из получившегося файла. Откроем файл на чтение (надеюсь, вы поняли, как это сделать?), и прочитаем строки.

Мы получили тот же список, что и был. В более сложных случаях (словарях, вложенных кортежей и т. д.) алгоритм записи придумать сложнее. Но это и не нужно. В python уже давно придумали средства, такие как pickle или json, позволяющие сохранять в файле сложные структуры.

Вы стали счастливым обладателем больших текстовых файлов, в которых заключены важные данные? Это здорово! Однако, теперь перед Вами стоит задача извлечения данных из файла по частям, желательно, по строкам. Ведь чтение большого файла и одномоментная загрузка его содержимого в оперативную память чревата жалобами компьютера на усталость и «замутненное сознание», что с 2020 года является непозволительной роскошью для рабочих лошадок. Поэтому предлагаю рассмотреть варианты, с помощью которых можно реализовать построчное чтение файла в Python 3 по следующему сценарию:

  • Открыть файл
  • Считать первую строку
  • Вывести на экран первую строку
  • Считать вторую строку
  • Вывести на экран 2ю строку
  • и так далее..

Сразу оговорюсь, что в Python открыть файл и прочитать данные из него можно несколькими способами. Для начала предлагаю взглянуть на наиболее оптимальный (исключительно на мой взгляд) вариант. Детальный разбор кода с рассмотрением других вариантов будет приведен чуть ниже, в следующем разделе статьи.

Оптимальный вариант для построчного чтения файла в Python:

1. Подготавливаем файл:

В качестве примера я буду использовать файл с именем «text.txt», состоящий из 5 строк следующего вида:

2. Создадим переменную для хранения пути к файлу:

Замените выражение в коде «путь к файлу» на актуальный путь к вашему файлу. Если у вас возникли сложности с определением пути к файлу, ознакомьтесь с инструкцией «Как задать путь к файлу в Python» и возвращайтесь — будем кодить построчное считывание файла!

3. Представленный ниже код откроет файл и выведет его содержимое на экран:

На экран выведется все содержимое файла:

Чтобы дополнить вывод номерами строк, добавим в приведенный выше код переменную num_line для хранения номера строки и функцию enumerate(file) для получения номера строки:

Теперь вывод выглядит так:

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

Детальный разбор построчного чтения файла в Python:

1. Первым делом мы открываем файл:

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

  • путь к файлу;
  • режим работы с файлом. Это не обязательный параметр, который по умолчанию принимает значение «r»(read), что позволяет открыть файл для чтения. Давайте взглянем, какие существуют режимы работы с файлами в Python:
    • r — (от английского слова read), режим позволяет открыть файл для чтения текста;
    • w — (от английского слова write) — позволяет открыть файл для записи текста. Если в файле уже присутствует какая-то информация, она будет стерта;
    • a — (от английского add) — используется для открытия файла в режиме «дозаписи», при котором к существующим в файле данным будет добавлена новая информация. При этом старые данные также остаются в файле;
    • rb — режим чтения двоичных данных;
    • wb — режим записи двоичных файлов.

    Для открытия файла мы воспользовались строкой вида:

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

    Такой вариант и по сей день имеет место быть, часто используется и отлично работает. Однако первый вариант имеет «защиту от дурака», чем лично для меня повышает свою привлекательность.

    2. Считываем данные из открытого файла

    Для чтения содержимого файла мы использовали цикл for. Каждая новая строка считывается в переменную line, а затем выводится на экране до тех пор, пока не будет достигнут символ окончания файла EOF:

    Это довольно гибкий рабочий вариант. Однако, сложно обойти стороной «святую троицу» Питоновских методов, созданных для работы с файлами:

    1. Метод read(file)

    Метод read(file) — считывает все данные из файла file и возвращает их в виде одной текстовой строки. Этот вариант подходит для файлов небольшого размера:

    Программа выведет на экран:

    2. Метод readline()

    Метод readline() считывает одну строку. Для того, чтобы вывести содержимое всего файла, необходимо зациклить построчный вывод:

    Результат работы кода:

    3. Метод readlines()

    Метод readlines() возвращает содержимое файла в виде списка строк:

    Результат работы кода:

    Используя метод readlines() можно легко получить доступ к нужной строке, допустим к строке с индексом 3:

    Так как Python нумерует строки с 0, то 3-й индекс в моем файле принадлежит четвертой строке

    Таким образом, мы научились выполнять построчное чтение файла в Python несколькими различными способами. Вы можете использовать любой из рассмотренных вариантов, в зависимости от Ваших предпочтений и особенностей задачи. Интересных Вам файлов и красивых строк! 😉

    Иногда недостаточно просто отображать данные на консоли. Данные могут быть очень большими, и только ограниченный объем данных может отображаться на консоли, поскольку память является энергозависимой, невозможно восстановить сгенерированные программой данные снова и снова.

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

    В Python файлы обрабатываются в двух режимах как текстовые или двоичные. Файл может быть в текстовом или двоичном формате, и каждая строка файла заканчивается специальным символом. Следовательно, файловая операция может выполняться в следующем порядке:

    Открытие файла

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

    Доступ к файлам можно получить с помощью различных режимов, таких как чтение, запись или добавление. Ниже приведены подробные сведения о режимах доступа для открытия файла.

    Режим доступа Описание
    1 r Он открывает файл в режиме только для чтения. Указатель файла существует в начале. Файл по умолчанию открывается в этом режиме, если не передан режим доступа.
    2 rb Открывает файл в двоичном формате только для чтения. Указатель файла существует в начале файла.
    3 г + Открывает для чтения и записи. Указатель файла также существует в начале.
    4 rb + в двоичном формате. Указатель файла присутствует в начале файла.
    5 w Только для записи. Он перезаписывает файл, если он существовал ранее, или создает новый, если файл с таким именем не существует. Указатель имеется в начале файла.
    6 wb Открывает файл для записи только в двоичном формате. Перезаписывает файл, если он существует ранее, или создает новый, если файл не существует. Указатель файла существует в начале файла.
    7 w + Для записи и чтения обоих. Он отличается от r + в том смысле, что он перезаписывает предыдущий файл, если он существует, тогда как r + не перезаписывает ранее записанный файл. Он создает новый файл, если файл не существует. Указатель файла существует в начале файла.
    8 wb + Он открывает файл для записи и чтения в двоичном формате. Указатель файла существует в начале файла.
    9 а В режиме добавления. Указатель файла существует в конце ранее записанного файла, если он существует. Он создает новый файл, если не существует файла с таким же именем.
    10 ab В режиме добавления в двоичном формате. Указатель существует в конце ранее записанного файла. Он создает новый файл в двоичном формате, если не существует файла с таким же именем.
    11 а + Он открывает файл для добавления и чтения. Указатель файла остается в конце файла, если файл существует. Он создает новый файл, если не существует файла с таким же именем.
    12 ab + Открывает файл для добавления и чтения в двоичном формате. Указатель файла остается в конце файла.

    Давайте посмотрим на простой пример, чтобы открыть файл с именем «file.txt»(хранящийся в том же каталоге) в режиме чтения и распечатать его содержимое на консоли.

    В приведенном выше коде мы передали filename в качестве первого аргумента и открыли файл в режиме чтения, поскольку мы упомянули r в качестве второго аргумента. Fileptr содержит объект файла, и если файл открывается успешно, он выполнит оператор печати.

    Метод close()

    После того, как все операции будут выполнены с файлом, мы должны закрыть его с помощью нашего скрипта Python, используя метод close(). Любая незаписанная информация уничтожается после вызова метода close() для файлового объекта.

    Мы можем выполнить любую операцию с файлом извне, используя файловую систему, которая в данный момент открыта в Python; поэтому рекомендуется закрыть файл после выполнения всех операций.

    Синтаксис использования метода close() приведен ниже.

    Рассмотрим следующий пример.

    После закрытия файла мы не можем выполнять какие-либо операции с файлом. Файл необходимо правильно закрыть. Если при выполнении некоторых операций с файлом возникает какое-либо исключение, программа завершается, не закрывая файл.

    Мы должны использовать следующий метод, чтобы решить такую проблему.

    Оператор with

    Оператор with был введен в Python 2.5. Он полезен в случае манипулирования файлами. Используется в сценарии, когда пара операторов должна выполняться с блоком кода между ними.

    Синтаксис для открытия файла с помощью оператора приведен ниже.

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

    Всегда рекомендуется использовать оператор with для файлов. Если во вложенном блоке кода возникает прерывание, возврат или исключение, тогда он автоматически закрывает файл, и нам не нужно писать функцию close() . Это не позволяет файлу исказиться.

    Рассмотрим следующий пример.

    Запись файла

    Чтобы записать текст в файл, нам нужно открыть файл с помощью метода open с одним из следующих режимов доступа.

    • w: он перезапишет файл, если какой-либо файл существует. Указатель файла находится в начале файла.
    • a: добавит существующий файл. Указатель файла находится в конце файла. Он создает новый файл, если файл не существует.

    Скриншот файла file2.txt

    Снимок файла к примеру 1

    Мы открыли файл в режиме w. Файл file1.txt не существует, он создал новый файл, и мы записали его содержимое с помощью функции write().

    Снимок файла file2.txt

    Снимок файла к примеру 2

    Мы видим, что содержимое файла изменено. Мы открыли файл в режиме и добавили содержимое в существующий файл file2.txt.

    Чтобы прочитать файл с помощью сценария Python, Python предоставляет метод read(). Метод read() считывает строку из файла. Он может читать данные как в текстовом, так и в двоичном формате.

    Синтаксис метода read() приведен ниже.

    Рассмотрим следующий пример.

    В приведенном выше коде мы прочитали содержимое file2.txt с помощью функции read(). Мы передали значение счетчика как десять, что означает, что он будет читать первые десять символов из файла.

    Если мы используем следующую строку, она распечатает все содержимое файла.

    Чтение файл для цикла

    Мы можем прочитать файл, используя цикл for. Рассмотрим следующий пример.

    Чтение файла построчно

    Python упрощает чтение файла построчно с помощью метода readline(). Метод readline() читает строки файла с самого начала, т. е. если мы используем его два раза, мы можем получить первые две строки файла.

    Рассмотрим следующий пример, который содержит функцию readline(), которая читает первую строку нашего файла «file2.txt», содержащую три строки.

    Пример 1: чтение строк с помощью функции readline()

    Мы вызывали функцию readline() два раза, поэтому она считывает две строки из файла.

    Python также предоставляет метод readlines(), который используется для чтения строк. Возвращает список строк до конца файла(EOF).

    Пример 2: чтение строк с помощью функции readlines()

    Создание нового файла

    Новый файл можно создать, используя один из следующих режимов доступа с функцией open().

    • x: создает новый файл с указанным именем. Вызовет ошибку, если существует файл с таким же именем.
    • a: создает новый файл с указанным именем, если такого файла не существует. Он добавляет содержимое к файлу, если файл с указанным именем уже существует.
    • w: создает новый файл с указанным именем, если такого файла не существует. Он перезаписывает существующий файл.

    Позиции указателя файла

    Python предоставляет метод tell(), который используется для печати номера байта, в котором в настоящее время существует указатель файла. Рассмотрим следующий пример.

    Изменение позиции указателя файла

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

    Для этой цели Python предоставляет нам метод seek(), который позволяет нам изменять положение указателя файла извне.

    Синтаксис для использования метода seek():

    Метод seek() принимает два параметра:

    Рассмотрим следующий пример.

    Модуль OS Python

    Переименование файла

    Модуль Python os обеспечивает взаимодействие с операционной системой. Модуль os предоставляет функции, которые участвуют в операциях обработки файлов, таких как переименование, удаление и т. д. Он предоставляет нам метод rename() для переименования указанного файла в новое имя. Синтаксис для использования метода rename() приведен ниже.

    Приведенный выше код переименовал текущий file2.txt в file3.txt.

    Удаление файла

    Модуль os предоставляет метод remove(), который используется для удаления указанного файла. Синтаксис метода remove() приведен ниже.

    Создание нового каталога

    Метод mkdir() используется для создания каталогов в текущем рабочем каталоге. Синтаксис для создания нового каталога приведен ниже.

    Метод getcwd()

    Этот метод возвращает текущий рабочий каталог.

    Синтаксис для использования метода getcwd() приведен ниже.

    Изменение текущего рабочего каталога

    Метод chdir() используется для изменения текущего рабочего каталога на указанный каталог.

    Синтаксис для использования метода chdir():

    Удаление каталога

    Метод rmdir() используется для удаления указанного каталога.

    Синтаксис использования метода rmdir() приведен ниже.

    Он удалит указанный каталог.

    Запись вывода Python в файлы

    В Python есть требования для записи вывода скрипта Python в файл.

    Метод check_call() подпроцесса модуля используется для выполнения сценария Python и записи вывода этого сценария в файл.

    Следующий пример содержит два сценария Python. Сценарий file1.py выполняет сценарий file.py и записывает свои выходные данные в текстовый файл output.txt.

    Методы, связанные с файлом

    Существуют следующие методы для управления файлами в различных операционных системах.

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

    Создание, открытие и закрытие файла

    Работа с любым текстовым файлом в Python начинается с вызова специальной функции open, которая принимает в качестве параметров путь к объекту на компьютере и режим обработки. Путь к документу можно указать как абсолютный (адрес расположения на жестком диске ПК), так и как относительный (координаты относительно папки проекта). Выбирая нужный режим обработки файла, следует учитывать его назначение (“w” для записи, “r” для чтения данных). Следующий пример показывает простое взаимодействие с текстовым документом.

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

    Выполнить точно такие же действия, но без необходимости вручную закрывать файл, вполне возможно благодаря связке операторов with as. Для этого необходимо поместить метод open сразу после ключевого слова with, а переменную, которая будет ссылаться на файл, прописать за конструкцией as. Ниже располагается пример открытия документа с помощью with as.

    Оба примера небольших программ демонстрируют работу с test.txt, который генерируется в каталоге с исходным кодом. В качестве режима обработки для него выбирается запись данных. После этого при помощи метода write в него заносится строка “hello world”. Завершается код в обоих случаях закрытием текстового файла test.txt методом close или автоматически.

    Запись построчно

    Чтобы быстро записать информацию в текстовый файл, достаточно открыть его в программе, написанной на языке Python, после чего воспользоваться функцией write через переменную, которая ссылается на документ.

    Приведенный выше пример небольшой программы показывает создание небольшого массива lines, который содержит три строковых элемента: “first”, “second” и “third”. За счет функции open и связки операторов with as происходит открытие текстового файла test.txt в корневом каталоге жесткого диска D. В цикле мы проходим по всем элементам списка и с помощью команды write их записываем. Чтобы каждая запись была с новой строки, добавляем символ перевода строки.

    Так же можно воспользоваться функцией writelines. Если мы передадим в качестве ее параметра список, то она запишет элементы друг за другом в одну строку. Но можно поступить следующим образом: в качестве параметра передать генератор следующим образом.

    Этот пример отличается от предыдущего тем, что вызывается метод writelines, который принимает в качестве аргумента генератор. Для разделения элементов последовательности тут применяется “\n”, благодаря чему каждое слово в документе будет находиться в отдельной строке.

    Чтение построчно

    Прочитать содержимое текстового файла построчно в языке Python очень просто, поскольку в этом прекрасно помогает цикл for. Но для начала все же необходимо открыть документ, как и в предыдущем случае, при помощи open и with as. Однако на этот раз следует указать другой режим обработки файла, выбрав для него “r” для получения доступа к чтению данных.

    В этом примере показывается открытие файла test.txt, в котором уже содержится небольшой массив строк, записанный ранее. Построчное чтение информации из файла производится в цикле for. Каждая итерация выводит сведения из новой строки (line) при помощи функции print. Все элементы отображаются на экране построчно, как и были ранее помещены в test.txt.

    Количество строк

    Возможности языка Python позволяют производить и куда более сложные виды программных операций с внутренним содержимым текстовых файлов. Например, если требуется определить в Python количество строк в файле, можно открыть файл и в цикле посчитать количество занятых в нем строк. В этом поможет предварительно объявленная переменная count, в которую перед применением нужно записать 0, а затем прибавлять по единице с каждой новой строкой.

    Приведенный выше пример демонстрирует работу счетчика count. Для взаимодействия с ним следует открыть текстовый файл в режиме чтения, а затем инкрементировать в каждом новом шаге цикла for объявленную ранее числовую переменную, которая затем выводится в print.

    Можно поступить и другим способом. Прочитать файл в список с помощью readlines. А после этого с помощью функции len определить размер списка. Это и будет количество строк.

    Поиск строки

    Чтобы с помощью Python найти строку в текстовом файле, стоит прибегнуть к помощи встроенного метода readlines, который позволяет автоматически считывать внутреннее содержимое файла. Как и раньше, для начала необходимо открыть test.txt для чтения, чтобы затем поместить данные из него в специальный массив lines. Встроенный метод index позволяет найти номер элемента в последовательности, просто передав ему нужный объект, например, строку “second”.

    Поскольку в test.txt все элементы располагаются в отдельных строках, к строке, которую стоит передать методу index в качестве аргумента, необходимо прибавить конструкцию “\n”.

    Удаление строки

    Чтобы в Python удалить ненужную строку из файла, следует воспользоваться сразу двумя режимами обработки файлов: чтение и запись. Для начала необходимо открыть test.txt для чтения, чтобы поместить информацию из него в отдельный массив lines. Далее потребуется удалить один из элементов последовательности при помощи оператора del, указав ему индекс нужной строки в квадратных скобках. Массив объектов, который получился в итоге, необходимо поместить в исходный текстовый файл, однако на этот раз открыть его надо в режиме записи.

    Приведенный выше пример небольшой программы демонстрирует удаление строки из файла. В данном случае используются методы readlines и writelines, позволяющие считывать массив строк из документа и записывать его туда же, разделяя отдельные элементы списка.

    Обратите внимание, что в приведенном примере удалится вторая строка, так как индексы списка считаются от нулевого элемента.

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

    • Вступление
    • Базовый файл IO в Python
    • Чтение Строка за строкой
    • Пример Приложения
    • Вывод

    Вступление

    Однако что вы делаете, когда файл, который вы пытаетесь использовать, довольно велик? Что делать, если файл содержит несколько ГБ данных или больше? Опять же, это был еще один частый аспект моей карьеры программиста, который в основном проводился в биотехнологическом секторе, где часто встречаются файлы размером 1 ТБ+.

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

    В этой статье мы рассмотрим несколько примеров кода, чтобы показать, как читать файлы построчно. Если вы хотите попробовать некоторые из этих примеров самостоятельно, код, используемый в этой статье, можно найти в следующем репо GitHub .

    Базовый файл IO в Python

    Будучи отличным языком программирования общего назначения, Python имеет ряд очень полезных функций ввода-вывода файлов в своей стандартной библиотеке встроенных функций и модулей. Встроенная функция open () -это то, что вы используете для открытия объекта file для чтения или записи.

    r Открыт для чтения обычного текста
    w Открыт для записи обычного текста
    a Откройте существующий файл для добавления обычного текста
    rb Открыт для чтения двоичных данных
    всемирный банк Открыт для записи двоичных данных

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

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

    Вместо того чтобы твердить о том, как важно всегда вызывать close() для файлового объекта, я хотел бы предложить альтернативный и более элегантный способ открыть файловый объект и убедиться, что интерпретатор Python очистит его после нас:)

    Просто используя ключевое слово with (введенное в Python 2.5) для обертывания нашего кода для открытия файлового объекта, внутренние компоненты Python сделают что-то похожее на следующий код, чтобы гарантировать, что независимо от того, какой файловый объект будет закрыт после использования.

    Чтение Строка за строкой

    Теперь давайте перейдем к фактическому чтению в файле. Объект file, возвращаемый из open () , имеет три общих явных метода ( read , readline и readlines ) для чтения данных и еще один неявный способ.

    Метод read будет считывать все данные в одну текстовую строку. Это полезно для небольших файлов, где вы хотели бы сделать текстовую манипуляцию со всем файлом или что-то еще, что вам подходит. Тогда есть readline , который является одним из полезных способов чтения только в отдельных строках инкрементных сумм за один раз и возврата их в виде строк. Последний явный метод, readlines , прочитает все строки файла и вернет их в виде списка строк.

    Как упоминалось ранее, вы можете использовать эти методы только для загрузки небольших фрагментов файла за один раз. Чтобы сделать это с помощью этих методов, вы можете передать им параметр, указывающий, сколько байтов нужно загрузить за один раз. Это единственный аргумент, который принимают эти методы.

    Ниже показана одна реализация для чтения текстового файла по одной строке за раз, которая выполняется с помощью метода readline () .

    В readline.py вы найдете следующий код. В терминале, если вы запустите $ python readline.py вы можете увидеть результат чтения всех строк Илиады, а также их номера строк.

    Приведенный выше фрагмент кода открывает файловый объект , хранящийся в виде переменной с именем fp , затем читает строку за раз, вызывая readline на этом файловом объекте итеративно в цикле while и выводит его на консоль.

    Запустив этот код, вы должны увидеть что-то вроде следующего:

    Хотя это совершенно нормально, есть один последний способ, о котором я мимолетно упоминал ранее, который менее явен, но немного более элегантен, и который я очень предпочитаю. Этот последний способ чтения файла строка за строкой включает в себя итерацию по файловому объекту в цикле for , присваивая каждой строке специальную переменную с именем line . Приведенный выше фрагмент кода может быть воспроизведен в следующем коде, который можно найти в скрипте Python forlinein.py:

    В этой реализации мы используем преимущества встроенной функциональности Python, которая позволяет нам неявно перебирать файловый объект с помощью цикла for в сочетании с использованием итеративного объекта fp . Это не только проще читать, но и требует меньше строк кода для написания, что всегда является лучшей практикой, достойной следования.

    Пример Приложения

    Приведенный выше код представляет собой скрипт python командной строки, который ожидает путь к файлу, переданный в качестве аргумента. Скрипт использует модуль os , чтобы убедиться, что переданный путь к файлу является файлом, существующим на диске. Если путь существует, то каждая строка файла считывается и передается функции с именем record_word_cnt в виде списка строк, разделенных пробелами между словами, а также словаря с именем bag_of_words . Функция record_word_cnt подсчитывает каждый экземпляр каждого слова и записывает его в словарь bag_of_words .

    После того как все строки файла прочитаны и записаны в словарь bag_of_words , вызывается последний вызов функции order_bag_of_words , которая возвращает список кортежей в формате (word, word count) , отсортированных по количеству слов. Возвращаемый список кортежей используется для печати наиболее часто встречающихся 10 слов.

    Вывод

    Итак, в этой статье мы исследовали способы чтения текстового файла построчно двумя способами, включая способ, который, по моему мнению, немного более питонен (это второй способ, продемонстрированный в forlinein.py). В заключение я представил тривиальное приложение, которое потенциально полезно для чтения и предварительной обработки данных, которые могут быть использованы для анализа текста или анализа настроений.

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

    Читайте также: