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

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

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

В Python это можно сделать несколькими способами. Рассмотрим один из самых простых и распространенных.

Использование встроенной функции open()

Первый способ — использовать встроенную функцию open() . В этом случае файл будет открыт в режиме чтения (‘r’) и каждая строка файла будет прочитана и добавлена в список с помощью метода readlines() .

with open('filename.txt', 'r') as file: lines = file.readlines()

В этом примере filename.txt — это имя файла, который вы хотите прочитать. Метод readlines() возвращает список, где каждый элемент списка — это отдельная строка из файла.

Таким образом, после выполнения этого кода, переменная lines будет содержать список строк из файла filename.txt .

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

Использование генераторов

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

with open('filename.txt', 'r') as file: lines = [line for line in file]

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

Читайте также:  Php for простые примеры

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

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

Источник

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

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

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

Пример 1: Чтение файла построчно функцией readline()

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

Как использовать функцию file.readline()

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

  1. Открываем файл в режиме чтения. При этом возвращается дескриптор файла.
  2. Создаём бесконечный цикл while.
    1. В каждой итерации считываем строку файла при помощи readline() .
    2. Если строка не пустая, то выводим её и переходим к следующей. Вы можете проверить это, используя конструкцию if not . В противном случае файл больше не имеет строк и мы останавливаем цикл с помощью break .
     
     
    # получим объект файла file1 = open("sample.txt", "r") while True: # считываем строку line = file1.readline() # прерываем цикл, если строка пустая if not line: break # выводим строку print(line.strip()) # закрываем файл file1.close
    Привет! Добро пожаловать на PythonRu. Удачи в обучении!

    Пример 2: Чтение строк как список функцией readlines()

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

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

     
    # получим объект файла file1 = open("sample.txt", "r") # считываем все строки lines = file1.readlines() # итерация по строкам for line in lines: print(line.strip()) # закрываем файл file1.close
    Привет! Добро пожаловать на PythonRu. Удачи в обучении!

    Пример 3: Считываем файл построчно из объекта File

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

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

    Для демонстрации откроем файл с помощью with open. Это применимо и к предыдущим двум примерам.

    Источник

    Чтение файлов#

    Посмотрим как считывать содержимое файлов, на примере файла r1.txt:

    ! service timestamps debug datetime msec localtime show-timezone year service timestamps log datetime msec localtime show-timezone year service password-encryption service sequence-numbers ! no ip domain lookup ! ip ssh version 2 !

    read #

    Метод read - считывает весь файл в одну строку.

    Пример использования метода read :

    In [1]: f = open('r1.txt') In [2]: f.read() Out[2]: '!\nservice timestamps debug datetime msec localtime show-timezone year\nservice timestamps log datetime msec localtime show-timezone year\nservice password-encryption\nservice sequence-numbers\n!\nno ip domain lookup\n!\nip ssh version 2\n!\n' In [3]: f.read() Out[3]: '' 

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

    readline #

    Построчно файл можно считать с помощью метода readline :

    In [4]: f = open('r1.txt') In [5]: f.readline() Out[5]: '!\n' In [6]: f.readline() Out[6]: 'service timestamps debug datetime msec localtime show-timezone year\n' 

    Но чаще всего проще пройтись по объекту file в цикле, не используя методы read. :

    In [7]: f = open('r1.txt') In [8]: for line in f: . print(line) . ! service timestamps debug datetime msec localtime show-timezone year service timestamps log datetime msec localtime show-timezone year service password-encryption service sequence-numbers ! no ip domain lookup ! ip ssh version 2 !

    readlines #

    Еще один полезный метод - readlines . Он считывает строки файла в список:

    In [9]: f = open('r1.txt') In [10]: f.readlines() Out[10]: ['!\n', 'service timestamps debug datetime msec localtime show-timezone year\n', 'service timestamps log datetime msec localtime show-timezone year\n', 'service password-encryption\n', 'service sequence-numbers\n', '!\n', 'no ip domain lookup\n', '!\n', 'ip ssh version 2\n', '!\n'] 

    Если нужно получить строки файла, но без перевода строки в конце, можно воспользоваться методом split и как разделитель, указать символ \n :

    In [11]: f = open('r1.txt') In [12]: f.read().split('\n') Out[12]: ['!', 'service timestamps debug datetime msec localtime show-timezone year', 'service timestamps log datetime msec localtime show-timezone year', 'service password-encryption', 'service sequence-numbers', '!', 'no ip domain lookup', '!', 'ip ssh version 2', '!', ''] 

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

    Если перед выполнением split , воспользоваться методом rstrip , список будет без пустой строки в конце:

    In [13]: f = open('r1.txt') In [14]: f.read().rstrip().split('\n') Out[14]: ['!', 'service timestamps debug datetime msec localtime show-timezone year', 'service timestamps log datetime msec localtime show-timezone year', 'service password-encryption', 'service sequence-numbers', '!', 'no ip domain lookup', '!', 'ip ssh version 2', '!'] 

    seek #

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

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

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

    In [15]: f = open('r1.txt') In [16]: print(f.read()) ! service timestamps debug datetime msec localtime show-timezone year service timestamps log datetime msec localtime show-timezone year service password-encryption service sequence-numbers ! no ip domain lookup ! ip ssh version 2 !

    Если вызывать ещё раз метод read , возвращается пустая строка:

    Но с помощью метода seek можно перейти в начало файла (0 означает начало файла):

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

    In [19]: print(f.read()) ! service timestamps debug datetime msec localtime show-timezone year service timestamps log datetime msec localtime show-timezone year service password-encryption service sequence-numbers ! no ip domain lookup ! ip ssh version 2 !

    Источник

Оцените статью