Вывод кажется странным, потому что он также печатает новые строки.Если вы посчитаете количество напечатанных символов, вывод будет правильным, если учесть символы новой строки.
Когда вы вызываете print()
, python добавит новую строку в вывод.Ниже показано, что Python видит каждый раз, когда вы вызываете print:
>>> f.read(2): 'He'+\n <- 2 characters + newline
>>> f.read(3): 'llo'+\n <- 3 characters + newline
>>> f.read(8): ' World\nT'+\n <- 8 characters + newline
>>> f.read(15): 'his is our new '+\n <- 15 characters + newline
>>>
>>> f.read(): 'text file\nand this is another line.\nWhy? Because we can.'+\n
Когда вы вызываете read для файла, он перемещает позицию курсора на указанное количество символов.Когда вы снова вызовете read, он вернется туда, где остановился.Если вы не укажете число, оно будет читаться до конца файла.