Python EOF для многобайтовых запросов file.read ()

В документации Python по file.read () указано, что пустая строка возвращается, когда EOF обнаруживается немедленно. . В документации далее говорится:

Обратите внимание, что этот метод может вызывать базовая функция C fread () Подробнее чем однажды в попытке приобрести как размер максимально близок к байтам. Также обратите внимание, что в неблокирующем режиме может быть меньше данных, чем было запрошено возвращается, даже если нет параметра размера был дан.

Я полагаю, что Гвидо высказал свое мнение о том, что не следует добавлять f.eof () ИДЕАЛЬНО ЯСНО , поэтому необходимо использовать способ 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

Является ли перерывом потенциальной ошибкой, если вы получили меньше байтов, чем запрошено при вызове file.read (size) ?

10
задан dawg 13 December 2010 в 07:23
поделиться