我正在尝试逐个阅读文件:
def buf_read2(filename, buffer_size):
with open(filename, 'rb') as f:
buffer = f.read(buffer_size)
print buffer # and do other stuff with it
这不会读取文件的最后一个块。例如,如果文件是129个字节并且我将buffer_size
设置为128,则不会读取最后一个字节。
这种古老的学校方法虽然有效:
def buf_read1(filename, buffer_size):
f = open(filename, 'rb')
while True:
buffer = f.read(buffer_size)
if not buffer:
break
print buffer # and do other stuff with it
f.close()
我做错了什么?
答案 0 :(得分:4)
with
不是循环,因此在您的第一个示例中,read()
只会被调用一次。
你仍然需要包含一个循环:
with open(filename, 'rb') as f:
while True:
buffer = f.read(buffer_size)
if not buffer:
break
print buffer # and do other stuff with it