Чтение из файла построчно в Python на примерах readline, readlines и цикла for

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

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

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

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

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

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

  1. Открываем файл в режиме чтения. При этом возвращается дескриптор файла.
  2. Создаём бесконечный цикл while.
    1. В каждой итерации считываем строку файла при помощи readline().
    2. Если строка не пустая, то выводим её и переходим к следующей. Вы можете проверить это, используя конструкцию if not. В противном случае файл больше не имеет строк и мы останавливаем цикл с помощью break.
  3. К моменту выхода из цикла мы считаем все строки файла в итерациях одну за другой.
  4. После этого мы закрываем файл, используя функцию close.

Копировать Скопировано Use a different Browser

# получим объект файла
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, чтобы обойти данный список.

Копировать Скопировано Use a different Browser

# получим объект файла
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. Это применимо и к предыдущим двум примерам.

Копировать Скопировано Use a different Browser

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

Выводы

В этом руководстве мы научились считывать текстовый файл построчно с помощью примеров программ на Python.

Максим

Я создал этот блог в 2018 году, чтобы распространять полезные учебные материалы, документации и уроки на русском. На сайте опубликовано множество статей по основам python и библиотекам, уроков для начинающих и примеров написания программ.

Python Q https://yandex.ru/q/loves/python Online

Python QCEO [email protected]://secure.gravatar.com/avatar/b16f253879f7349f64830c64d1da4415?s=96&d=mm&r=gCEO PythonruPythonАлександрРедакторhttps://t. me/cashncarryhttps://pythonru.com/https://yandex.ru/q/profile/cashnc/[email protected] Zabrodin2018-10-26OnlinePython, Programming, HTML, CSS, JavaScript

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

Вопрос задан

Изменён 2 года 2 месяца назад

Просмотрен 49k раз

Здраствуйте. В txt файле записано:

97
115
116

Каждое число записано с новой строки. Хотелось создать переменную или массив содержащий число, но банальный a = f.read() не помогает, так как считывает целеком весь файл. Помогите пожалуйста)

  • python
  • python-3.x
  • файлы
  • python-2.x

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

read() обычно в учебниках рассказывается о file.readline() и file.readlines() Поэтому у вас 3 варианта:

  1. Читать в цикле файл построчно через file.readline()
  2. Читать весь файл сразу в список через file.readlines(), но тогда вам самостоятельно придется избавляться от символов перевода строки
  3. Читать файл за один раз целиком и обрабатывать его через splitlines()file.read().splitlines() — тоже сразу в список и без символов перевода строк.

Последний вариант самый привлекательный, на мой взгляд:

with open('numbers.txt', 'r') as f:
    nums = f.read().splitlines()
print(nums)

[’97’, ‘115’, ‘116’]

1

test.txt

97
115
116

with open('test.txt') as f:
    myList = [ line.split() for line in f ]
print(myList)
[['97'], ['115'], ['116']]
flatList = [item for sublist in myList for item in sublist]
print(flatList)
['97', '115', '116']
with open("file. txt") as file:
    str = [row.strip() for row in file]

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

By clicking “Отправить ответ”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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

Предварительные требования:  

  • Открытие файла
  • Режимы доступа
  • Закрытие файла
9001 5

Python предоставляет встроенные функции для создания, записи и чтения файлов. Есть два типа файлов, которые можно обрабатывать в python: обычные текстовые файлы и двоичные файлы (написанные на двоичном языке, 0 и 1). В этой статье мы собираемся изучить чтение построчно из файла.

Метод 1: Чтение файла построчно с помощью readlines()

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

Пример:  

Python3

 

L = 900 35 [ "Гики\n" , "для\n" , "Гики\n" ]

 

файл1 = открыть ( 'myfile. txt' , 'w' ) 9003 6

file1.writelines(L)

file1.close()

 

file1 = открыть ( 'myfile.txt'
,
'r' )

Строки = file1.readlines()

 

9 0034 количество = 0

для строка в строки:

     количество + = 1

     печать ( 9003 6 "Строка{}: {}" . формат (count, line.strip()))

Вывод:  
 

 Line1: Компьютерщики
Строка 2: для
Line3: Geeks 

Временная сложность данного кода Python равна O(n), где n — общее количество строк в файле

Вспомогательная пространственная сложность кода равна O(n), где n — общее количество строк в файле.

Метод 2: Чтение файла построчно с помощью readline()

Функция readline() считывает строку файла и возвращает ее в виде строки. Он принимает параметр n, который указывает максимальное количество байтов, которые будут прочитаны. Однако не читает более одной строки, даже если n превышает длину строки. Это будет эффективно при чтении большого файла, потому что вместо того, чтобы извлекать все данные за один раз, он извлекает построчно. readline() возвращает следующую строку файла, которая содержит символ новой строки в конце. Кроме того, если достигнут конец файла, он вернет пустую строку.

Пример:

ПОДХОД ЗА ШАГОМ:

  1. Создайте список L с тремя строковыми элементами, содержащими символы новой строки.
  2. Откройте файл с именем myfile.txt в режиме записи и назначьте его переменной file1.
  3. Записать содержимое списка L в файл с помощью метода writelines() файлового объекта file1.
  4. Закройте файловый объект file1 с помощью метода close().
  5. Откройте файл с именем myfile.txt в режиме чтения и назначьте его переменной file1.
  6. Инициализировать счетчик переменных значением 0.
  7. Запустить бесконечный цикл.
  8. Увеличение переменной count на 1 в каждой итерации цикла.
  9. Прочитать следующую строку из файлового объекта file1 с помощью метода readline() и присвоить ее переменной line.
  10. Проверить, не пуста ли линейная переменная. Если он пуст, это означает, что достигнут конец файла. В этом случае выйдите из цикла с помощью оператора break.
  11. Вывести значение count и содержимое строки, используя метод format() класса string. Метод strip() используется для удаления символа новой строки в конце строки.
  12. Закройте файловый объект file1 с помощью метода close().

Python3

 

L = [ "Гики\n" , "для\n" , "Гики\n" ]

 

файл1 9003 6 = открыть ( 'myfile.
txt'
, 'w' )

файл1.writelines((L))

file1.close()

 

file1 = open ( 'my file.txt' , 'r' )

count = 0

 

в то время как True :

     количество + = 900 35 1

 

    

     строка = file1.readline()

 

    

    

     если не строка:

         break

     print ( "Line{}: {}" . format (счетчик, строка. полоса()))

 

file1.close()

Вывод:  

 Line1 Компьютерщики
Line2 для
Line3 Geeks 

Метод 3: чтение файла построчно с использованием цикла for

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

Пример:

Python3

 

L = [ "Гики\n" , "для\n" , "Гики\n" ]

 

файл1 = открыть ( 'myfile. txt' , 'w' ) 9003 6

файл1.writelines(L)

file1.close()

 

file1 = открыть ( 'myfile.txt' , 'r' )

количество = 0

 

печать ( "Использование цикла" )

для строка в файл1: 9000 6      количество + = 1

     печать ( "Строка{}: {}" 9 0035 .
формат (count, line.strip()))

 

file1.close()

900 03 Вывод:

 Использование цикла for
Строка 1: Компьютерщики
Строка 2: для
Line3: Компьютерщики 

Метод 4: Чтение файла построчно с использованием цикла for и понимания списка

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

Пример

Python3

90 161

Вывод:

 ['Гики\n', 'Для\n', 'Гики']
['Geeks', 'For', 'Geeks'] 

С оператором

В приведенных выше подходах каждый раз, когда файл открывается, его необходимо явно закрывать. Если забыть закрыть файл, это может внести несколько ошибок в код, т. е. многие изменения в файлах не вступят в силу, пока файл не будет закрыт должным образом. Чтобы предотвратить это, можно использовать оператор with. Оператор With в Python используется при обработке исключений, чтобы сделать код чище и читабельнее. Это упрощает управление общими ресурсами, такими как файловые потоки. В следующем примере кода показано, как использование инструкции with делает код чище. Нет необходимости вызывать file.close() при использовании с оператором. Оператор with сам по себе обеспечивает надлежащее получение и высвобождение ресурсов.

Пример:

Python3

с открытым ( 'my file.txt' ) as f:

     строк = [строка для строка 9003 6 в f]

 

печать (строк)

 

с 9 0035 открыть
( 'myfile.txt' ) as f:

     строк = [line.rstrip() для 900 36 строка в f]

 

печать (строк)

 

L = [ "Гики\n" , "для\n" , "Гики\n" ]

 

 

с открыть ( "myfile. txt" , "w" ) как fp: 90 036

     fp.writelines(L)

 

 

количество = 0

печать ( 9003 6 "Использование readlines()" )

 

с открыть ( "myfile.txt" 90 035 ) as fp:

     Lines = fp.readlines()

     9003 5 для
строка в Строки:

         количество + = 1

         print ( "Line{}: {}" . format (count, line.strip()))

  900 06

 

количество = 0

печать ( "\nИспользование readline()" )

 

с открыть ( "myfile. txt" ) как fp:

     в то время как 900 36 True :

         количество + = 1

9 Если
не строка:

            break

         print ( "Line{}: {}" формат (число, строка.полоса()))

число = 0

печать ( "\nИспользование цикла" )

 

с открыть 9003 6 ( "myfile.txt" ) как fp:

     для строка в fp:

900 35         
количество + = 1

         печать ( "Line{}: {}" . формат (счетчик, line.strip()))

Вывод: 9000 5  

 Использование readlines()
Строка 1: Компьютерщики
Строка 2: для
Строка 3: Компьютерщики
Использование строки чтения()
Строка 1: Компьютерщики
Строка 2: для
Строка 3: Компьютерщики
Использование цикла
Строка 1: Компьютерщики
Строка 2: для
Строка 3: Компьютерщики 

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

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

  • Открыть файл
  • Прочитать файл
  • Сохранить содержимое как список

К счастью, Python позволяет очень легко делать эти вещи, поэтому самый короткий способ прочитать файл в список:

 lst = list(open(filename))
 

Однако я добавлю еще несколько пояснений.

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

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

  • Имя файла
  • Режим
  • Буферизация (я проигнорирую этот аргумент в этом ответе)

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

 open('afile') # открывает файл с именем afile в текущем рабочем каталоге
open('adir/afile') # относительный путь (относительно текущего рабочего каталога)
open('C:/users/aname/afile') # абсолютный путь (Windows)
open('/usr/local/afile') # абсолютный путь (linux)
 

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

Второй аргумент - это режим , по умолчанию это r , что означает "только для чтения". Это именно то, что вам нужно в вашем случае.

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

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

 open(filename)
открыть (имя файла, 'р')
 

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

 open(filename, 'rb')
 

На других платформах 'b' (двоичный режим) просто игнорируется.


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

Хотя вы можете использовать:

 f = open(имя файла)
# ... делать что-то с f
е. закрыть()
 

Это не позволит закрыть файл, когда что-то между open и close вызовет исключение. Вы можете избежать этого, используя try и finally :

 f = open(filename)
# ничего между ними!
пытаться:
    # делать что-то с f
окончательно:
    е.закрыть()
 

Однако Python предоставляет контекстные менеджеры с более красивым синтаксисом (но для open это почти идентично попробуйте и наконец выше):

 с open(filename) как f:
    # делать что-то с f
# Файл всегда закрывается после окончания with-scope.
 

Последний подход — это рекомендуемый подход для открытия файла в Python!

Чтение файла

Хорошо, вы открыли файл, теперь как его прочитать?

Функция open возвращает объект файла и поддерживает протокол итерации Python. Каждая итерация даст вам строку:

 с открытым (имя файла) как f:
    для строки в f:
        печать (строка)
 

Будет напечатана каждая строка файла. Обратите внимание, однако, что каждая строка будет содержать символ новой строки \n в конце (вы можете проверить, создан ли ваш Python с универсальной поддержкой новых строк - в противном случае вы могли бы также иметь \r\n в Windows или \r на Mac в качестве новых строк). Если вы не хотите этого, вы можете просто удалить последний символ (или два последних символа в Windows):

 с открытым (имя файла) как f:
    для строки в f:
        печать (строка [:-1])
 

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

 с open(filename) как f:
    для строки в f:
        если строка.заканчивается('\n'):
            строка = строка[:-1]
        печать (строка)
 

Но вы можете просто удалить все пробелы (включая символ \n ) из конец строки , это также удалит все остальные конечные пробелы , поэтому вы должны быть осторожны, если они важны:

 с open(filename) как f:
    для строки в f:
        печать (f. rstrip())
 

Однако, если строки заканчиваются на \r\n ("новая строка" Windows), то .rstrip() также позаботится о \r !

Сохранить содержимое в виде списка

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

 с открытым (имя файла) как f:
    лст = список (е)
 

Если вы хотите удалить завершающие символы новой строки, вы можете вместо этого использовать понимание списка:

 с open(filename) как f:
    lst = [line.rstrip() для строки в f]
 

Или еще проще: метод .readlines() объекта file по умолчанию возвращает список строк:

 с open(filename) как f:
    лст = f.readlines ()
 

Это также будет включать конечные символы новой строки, если они вам не нужны, я бы рекомендовал [line.rstrip() для строки в f] подход, потому что он позволяет избежать хранения двух списков, содержащих все строки в памяти.