1. ホーム
  2. python

[解決済み] Pythonで大きなファイルを読み込むための遅延メソッド?

2022-03-16 19:03:50

質問

4GBの非常に大きなファイルを持っていますが、それを読もうとするとコンピュータがハングアップしてしまいます。 そこで、一片ずつ読み込んで、各片を処理した後、処理した片を別のファイルに保存して、次の片を読み込むようにしたいのですが、どうすればいいですか?

を実行する方法はありますか? yield というようなことがあります。

を是非お願いします。 遅延メソッド .

どのように解決するのですか?

遅延関数を書くには、単に yield :

def read_in_chunks(file_object, chunk_size=1024):
    """Lazy function (generator) to read a file piece by piece.
    Default chunk size: 1k."""
    while True:
        data = file_object.read(chunk_size)
        if not data:
            break
        yield data


with open('really_big_file.dat') as f:
    for piece in read_in_chunks(f):
        process_data(piece)


もう一つの方法として iter とヘルパー関数があります。

f = open('really_big_file.dat')
def read1k():
    return f.read(1024)

for piece in iter(read1k, ''):
    process_data(piece)


ファイルがラインベースである場合、ファイルオブジェクトはすでにラインの遅延生成器となっています。

for line in open('really_big_file.dat'):
    process_data(line)