Что определяет, как "максимум байты считываются и возвращаются" с помощью Python read()?

В документации по вводу / выводу Python в разделе "Чтение и запись файлов" говорится:

https://docs.python.org/3.5/tutorial/inputoutput.html

"Когда размер опущен или отрицателен, все содержимое файла будет прочитано и возвращено; это ваша проблема, если файл будет в два раза больше памяти вашей машины. В противном случае, самое большее размер байтов читается и возвращается".

Давайте возьмем следующий код:

size = 1000
with open('file.txt', 'r') as f:
    while True:
        read_data = f.read(size)
        if not read_data:
            break 
        print(read_data)   # outputs data in sizes equal to at most 1000 bytes

Вот, size самое большее 1000 байтов. Что определяет "максимум"?

Допустим, мы анализируем строки структурированных данных. Каждый ряд составляет 750 байтов. Будет читать "отрезать" следующий ряд или остановиться на \n?

1 ответ

Решение

read не является readline или же readlines, Он просто читает байты независимо от содержимого файла (кроме перевода строки в конце, так как ваш файл открыт как текст)

  • Если в буфере нужно прочитать 1000 байтов, он возвращает 1000 байтов (или меньше, если файл имеет \r\n формат (Windows CR+LF) и читать как текст, \r чары раздели)
  • Если осталось 700 байт, возвращается 700 байт (дайте или возьмите \r выпуск)
  • Если читать нечего, возвращается пустой буфер (len(read_data)==0).
Другие вопросы по тегам