Функция чтения строк (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, и он будет читать только до того количества байтов за один раз + достаточно для завершения следующей строки, возвращая все строки, которые полностью прочитаны.

  • Сортировка dict по суб-значению в Python
  • Объект 'Engine' не имеет атрибута 'drivername'
  • Несколько основных вопросов о кодировании, unicode и stdout
  • Как установить центральный виджет существующего MainWidnow в Python PyQt4?
  • BeautifulSoup - Получить текст в теге только в том случае, если определенная строка найдена
  • Ошибка запуска подпроцесса IDLE
  • Python 2.7 - Добавлены цитаты при использовании Popen для выполнения из переменной
  • добавлять значение к каждому элементу в массиве python
  • Python - лучший язык программирования в мире.