我刚刚了解了iter函数的第二个参数,它可以用来循环直到满足某个条件。
with open(file, 'r') as f:
for chunk in iter(lambda _ : f.read(8192), ''):
print(chunk)
但是,由于iter只接受函数,我只能通过将它转换为生成器函数并将其转换为iter来为列表编写类似的东西。因此,我想知道是否有更多的pythonic方式这样做。请注意我已经看过Padraic's answer,我特别指的是一个平等条件。
答案 0 :(得分:2)
另一种方法是使用生成器
def file_iterator(filehandle, chunksize=8192, sentinel=''):
while True:
result = f.read(chunksize)
if result == sentinel:
return
yield result
with open(file, 'r') as f:
for chunk in file_iterator(file):
print(chunk)