Функция чтения () Python читает больше символов, чем указано - PullRequest
0 голосов
/ 24 февраля 2019

first_file.txt

“
Hello World
This is our new text file
and this is another line.
Why? Because we can.
“

Результат связан со мной, см. Ниже.

with open('first_file.txt') as f:
    print(f.read(2))
    print(f.read(3))
    print(f.read(8))
    print(f.read(15))
    print(f.read()) 

Кто-нибудь может объяснить, прочитал (8) и прочитал (15)?См. Ниже для вывода.

He
llo
 World
T
his is our new 
text file
and this is another line.
Why? Because we can.

1 Ответ

0 голосов
/ 24 февраля 2019

Вывод кажется странным, потому что он также печатает новые строки.Если вы посчитаете количество напечатанных символов, вывод будет правильным, если учесть символы новой строки.

Когда вы вызываете 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, он вернется туда, где остановился.Если вы не укажете число, оно будет читаться до конца файла.

...