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_size128 に設定した場合、最後のバイトは読み取られません。

ただし、この古い学校のアプローチは機能します。

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 に答える