В Python для двоичного файла я могу написать следующее:
buf_size=1024*64 # this is an important size...
with open(file, "rb") as f:
while True:
data=f.read(buf_size)
if not data: break
# deal with the data....
С текстовый файл, который я хочу прочитать построчно, я могу написать это:
with open(file, "r") as file:
for line in file:
# deal with each line....
Сокращение для:
with open(file, "r") as file:
for line in iter(file.readline, ""):
# deal with each line....
Эта идиома задокументирована в PEP 234 , но мне не удалось найти аналогичная идиома для двоичных файлов.
Я пробовал это:
>>> with open('dups.txt','rb') as f:
... for chunk in iter(f.read,''):
... i+=1
>>> i
1 # 30 MB file, i==1 means read in one go...
Я попытался поместить iter (f.read (buf_size), '')
, но это синтаксическая ошибка из-за скобок после вызываемого в iter ().
Я знаю, что могу написать функцию, но есть ли способ с идиомой по умолчанию для фрагмента в файле:
, где я могу использовать размер буфера вместо ориентированного на строку?
Спасибо за размещение с новичком в Python, пытающимся написать свой первый нетривиальный и идиоматический скрипт Python.