Функция чтения строк (n) функции Python

Я прочитал документацию , но что делает readlines (n)? По readlines (n), я имею в виду readlines (3) или любое другое число.

Когда я запускаю readlines (3), он возвращает то же самое, что и readlines ().

2 Solutions collect form web for “Функция чтения строк (n) функции Python”

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

readlines([size]) -> list of strings, each a line from the file. Call readline() repeatedly and return a list of the lines so read. The optional size argument, if given, is an approximate bound on the total number of bytes in the lines returned. 

Другая цитата:

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

Вы правы, что это мало что делает для небольших файлов, что интересно:

 In [1]: open('hello').readlines() Out[1]: ['Hello\n', 'there\n', '!\n'] In [2]: open('hello').readlines(2) Out[2]: ['Hello\n', 'there\n', '!\n'] 

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

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

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

 In [4]: open('hello', 'r', 0).readlines(2) Out[4]: ['Hello\n', 'there\n', '!\n'] 

В моей системе размер этого внутреннего буфера составляет около 5 килобайт / 1,7 тыс. Строк:

 In [1]: len(open('hello', 'r', 0).readlines(5)) Out[1]: 1756 In [2]: len(open('hello', 'r', 0).readlines()) Out[2]: 28080 

В зависимости от размера файла, readlines (hint) должен возвращать меньший набор строк. Из документации:

 f.readlines() returns a list containing all the lines of data in the file. If given an optional parameter sizehint, it reads that many bytes from the file and enough more to complete a line, and returns the lines from that. This is often used to allow efficient reading of a large file by lines, but without having to load the entire file in memory. Only complete lines will be returned. 

Итак, если ваш файл имеет 1000 строк, вы можете передать в … 65536, и он будет читать только до того количества байтов за один раз + достаточно для завершения следующей строки, возвращая все строки, которые полностью прочитаны.

  • Pandon pandas: объединить два фрейма данных по индексу даты и общее значение столбца
  • Запись файла .CSV в Python, который работает как для Python 2.7+, так и для Python 3.3+ в Windows
  • Несколько таблиц (5) одна страница с помощью ReportLab
  • Python добавляет элемент в кортеж
  • Pyramid: Как создать пользовательский диспетчер?
  • Как правильно разобрать utf-8 xml с ElementTree?
  • Почему импорт не всегда импортирует вложенные пакеты?
  • как заменить только определенные слова в файле
  • Как исправить: «UnicodeDecodeError: кодек ascii не может декодировать байт»
  • Python newbie - PIP / недопустимая синтаксическая ошибка
  • Ошибка NZEC в Python
  • Python - лучший язык программирования в мире.