1

我正在尝试逐个读取文件:

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()

我究竟做错了什么?

4

1 回答 1

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
于 2012-10-20T19:37:11.193 回答