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

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


我究竟做错了什么?

最佳答案

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

关于python - 打开,因为不读取文件的最后一块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12991948/

10-16 11:46