Документы Python на file.read() утверждают, что An empty string is returned when EOF is encountered immediately.
В документации далее говорится:
Обратите внимание, что этот метод может вызвать базовый C функции fread() подробнее чем один раз, пытаясь приобрести как как можно ближе к размеру байтов. Также обратите внимание, что в режиме без блокировки, меньше данных, чем было запрошено, может быть возвращается, даже если параметр размера.
Я считаю, что Guido сделал свое мнение о том, что не добавляет f.eof() PERFECTLY CLEAR, поэтому нужно использовать способ Python!
Однако для меня не ясно, есть ли окончательный тест, который вы достигли EOF, если вы получили меньше, чем запрошенные байты от чтения, но вы получили некоторые.
т
with open(filename,'rb') as f:
while True:
s=f.read(size)
l=len(s)
if l==0:
break # it is clear that this is EOF...
if l<size:
break # ? Is receiving less than the request EOF???
Является ли это потенциальной ошибкой break
, если вы получили меньше байтов, запрошенных при вызове file.read(size)
?