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

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

  • автор:

Метод 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(), пишет список строк в файл

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().

В чем разница между sys.stdin.readline() и input()?

Разбирал задачу, и наткнулся на
N = int(sys.stdin.readline())
Чем плох обычный int(input()) ?

Задача на всякий случай ссылка на задачу. Задача в самом конце

  • Вопрос задан более трёх лет назад
  • 5713 просмотров

1 комментарий

Простой 1 комментарий

gordon_shamway

Шамуэй @gordon_shamway
Решения вопроса 1

Чем плох обычный int(input()) ?

Ничем. Это немного разные вещи, так как input() принимает строку приглашения, которая должна быть выведена перед приёмом ответа — это как бы print() + sys.stdin.readline().
В контексте задачи разницы нет.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ответы на вопрос 0
Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python
  • +1 ещё

‘latin-1’ codec can’t encode characters in position 36-40: ordinal not in range(256)?

  • 1 подписчик
  • 13 часов назад
  • 65 просмотров

Разница в 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 байт)

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

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