Чем readline отличается от readlines в python
Перейти к содержимому

Чем readline отличается от readlines в python

  • автор:

file.readline

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

 with open('my_file.txt') as f: 
f.readline() # 'The first line.\n'
f.readline() # '\n'
f.readline() # 'The last line.\n'
f.readline() # ''

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

 with open('my_file.txt') as f: 
for line in f:
print(line)

Такой подход эффективен с точки зрения расходования памяти, быстр, и выглядит хорошо.

  • Для считывания файла кусками используйте read().
  • Для считывания всех строк разом используйте readlines().

Метод file.readlines() в Python, получает список строк файла

Читает файл целиком, получает список строк из файла

Синтаксис:
file.readlines([sizehint]) 
Параметры:
  • file — объект файла
  • sizehint — int , количество байтов
Возвращаемое значение:
  • списокстрок в текстовом режиме или байтовых объектов в двоичном режиме.
Описание:

Метод файла file.readlines() читает файловый объект file построчно, пока не достигнет конца файла EOF и возвращает список, содержащий строки или байтовые объекты файла в зависимости от режима, в котором открыт файл функцией open() . Конечный символ новой строки \n сохраняется в строке.

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

Пустая строка возвращается только по достижении конца файла, т. е. EOF встречается немедленно.

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

Примеры получения списка строк файла.

>>> text = 'This is 1st line\nThis is 2nd line\nThis is 3rd line\n' >>> fp = open('foo.txt', 'w+') >>> fp.write(text) # 51 >>> fp.seek(0) # 0 >>> fp.readlines() # ['This is 1st line\n', 'This is 2nd line\n', 'This is 3rd line\n'] >>> fp.seek(0) # 0 >>> fp.readlines(15) # ['This is 1st line\n'] >>> fp.readlines(20) # ['This is 2nd line\n', 'This is 3rd line\n'] >>> fp.readlines(20) # [] >>> fp.close() 

Внимание! Функцию open() предпочтительнее использовать с оператором контекстного менеджера with . При использовании оператора with файл закрывать не нужно:

text = 'This is 1st line\nThis is 2nd line\nThis is 3rd line\n' # пишем with open('foo.txt', 'w') as fp: fp.write(text) #51 # читаем построчно с помощью `fp.readlines()` with open('foo.txt', 'r') as fp: data = fp.readlines() print(data) # ['This is 1st line\n', 'This is 2nd line\n', 'This is 3rd line\n'] # читаем построчно с помощью `for` with open('foo.txt', 'r') as fp: for line in fp: print(line.rstrip('\n')) # This is 1st line # This is 2nd line # This is 3rd line 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Метод file.close(), закрывает файл
  • Метод file.flush(), очищает буфер чтения
  • Метод file.fileno(), получает файловый дескриптор
  • Метод file.isatty(), проверяет связь с терминалом
  • Метод file.read(), читает весь файл или кусками
  • Метод file.readline(), читает файл построчно
  • Метод file.readlines(), получает список строк файла
  • Метод file.seek(), перемещает указатель в файле
  • Метод file.tell(), позиция указателя в файле
  • Метод file.truncate(), усекает размер файла
  • Метод file.write(), пишет данные в файл
  • Метод file.writelines(), пишет список строк в файл

Разница в read(), readline() и readlines() в Python

Я искал на вебе Python команды, упомянутые в заголовке и их различии; однако, я не был удовлетворен полным базовым пониманием этих команд.

Предположим, что мой файл содержит только следующее содержимое.

Это первый раз, когда я задаю вопрос на этом сайте, я буду признателен, если кто-то прояснит мои сомнения по поводу изучения Python. Я благодарю StackOverflow за эту платформу.

В командах read() , readline() и readlines() , одно различие, конечно, заключается в чтении всего файла, или одной строки, или указанной строки.

Но я не понял использование/необходимость скобки () в этих командах. Например, в чем разница между readline() и readline(7) ? Если аргумент 7 превышает количество строк в файле, что будет выведено?

В упомянутом выше веб-сайте объясняется, что делает аргумент в read() ; но не упоминается, что делает аргумент в readline() или readlines() ?

Поделиться Источник 24 сентября 2019 в 04:36

2 ответа

read(n) filevar.read() 

Читает и возвращает строку из n символов, или весь файл в виде одной строки, если n не предоставлено.

readline(n) filevar.readline() 

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

readlines(n) filevar.readlines() 

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

Поделиться 14 августа 2020 в 14:41

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

readline(size=-1)

Читайте и возвращайте одну строку из потока. Если указан size , будет прочитано максимум size байтов.

Терминатор строки всегда b’\n’ для двоичных файлов; для текстовых файлов аргумент перевода строки в open() может быть использован для выбора распознанного терминатора строки.

readlines(hint=-1)

Читайте и возвращайте список строк из потока. hint может быть указан для управления количеством прочитанных строк: больше не будет прочитанных строк, если общий размер (в байтах/символах) всех строк на данный момент превышает hint .

Обратите внимание, что уже можно перебирать объекты файлов с помощью for line in file. без вызова file.readlines() .

Таким образом, readline() читает целую строку. readline(7) читает не более 7 байт строки. readlines() читает все строки в виде списка. readlines(7) возвращает не менее 1 полной строки и больше строк (пока не превысит 7 байт)

Метод file.readline() в Python, читает файл построчно

Метод файла file.readline() читает одну целую строку из файла. Конечный символ новой строки \n сохраняется в строке. Метод возвращает одну строку или байтовый объект в зависимости от режима, в котором открыт файл функцией open() .

Если необязательный аргумент size присутствует и неотрицателен, то метод читает строку частями по size байтов, пока не достигнет символ новой строки \n . Если size отрицателен, то считывается строка полностью.

Пустая строка возвращается только тогда, когда достигнут конец файла, т. е. EOF встречается немедленно.

  • Прочитать файл кусками можно с помощью метода file.read() .
  • Создать список строк из файла file.readlines() .

Примеры построчного чтения файла.

  • Общий случай использования;
  • Чтение файла при помощи цикла for ;
  • Чтение строк файла кусками.

Общий случай использования метода файла file.readline() .

# подготовим файл 'foo.txt' >>> text = 'This is 1st line\nThis is 2nd line\nThis is 3rd line\n' >>> fp = open('foo.txt', 'w+') # запишем текст в файл 'foo.txt' >>> fp.write(text) # 51 # указатель в начало файла >>> fp.seek(0) # 0 # начинаем читать построчно >>> fp.readline() # 'This is 1st line\n' >>> fp.readline() # 'This is 2nd line\n' >>> fp.readline() # 'This is 3rd line\n' >>> fp.readline() # '' >>> fp.close() 

Чтение файла при помощи цикла for .

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

>>> fp = open('foo.txt', 'r') >>> next(fp) # 'This is 1st line\n' >>> next(fp) # 'This is 2nd line\n' >>> next(fp) # 'This is 3rd line\n' >>> next(fp) # Traceback (most recent call last): # File "", line 1, in # StopIteration >>> fp.close() 

Так как цикл for/in делает то же самое, а именно при прохождении по последовательности вызывает next , следовательно, более просто, читать файл построчно, без ущерба для оперативной памяти можно следующим образом.

Внимание! Функцию open() предпочтительнее использовать с оператором контекстного менеджера with . При использовании оператора with файл закрывать не нужно:

>>> with open('foo.txt', 'r') as fp: . for n, line in enumerate(fp, 1): . # Обработка строки 'line' . line = line.rstrip('\n') . print(f"Вывод строки: n>) - line>") . # Вывод строки: 1) - This is 1st line # Вывод строки: 2) - This is 2nd line # Вывод строки: 3) - This is 3rd line 

Чтение строк файла кусками при помощи цикла while .

Возможно возникнет вопрос, зачем тогда вообще нужен метод файла file.readline() , если все так просто. Ответы просты. А если необходимо прочитать только одну строку? А если строка файла (до разделителя строки \n ) очень длинная и не умещается в оперативной памяти, то тогда приходит на помощь метод файла file.readline() , т.к. он умеет разбивать строку файла на куски.

>>> fp = open('foo.txt', 'r') # будем читать строку по 10 байт >>> line = fp.readline(10) >>> while line: . line = line.rstrip('\n') . print(line) . line = fp.readline(10) . # This is 1s # t line # This is 2n # d line # This is 3r # d line >>> fp.close() 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Метод file.close(), закрывает файл
  • Метод file.flush(), очищает буфер чтения
  • Метод file.fileno(), получает файловый дескриптор
  • Метод file.isatty(), проверяет связь с терминалом
  • Метод file.read(), читает весь файл или кусками
  • Метод file.readline(), читает файл построчно
  • Метод file.readlines(), получает список строк файла
  • Метод file.seek(), перемещает указатель в файле
  • Метод file.tell(), позиция указателя в файле
  • Метод file.truncate(), усекает размер файла
  • Метод file.write(), пишет данные в файл
  • Метод file.writelines(), пишет список строк в файл

Добавить комментарий

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