如何读取比机器内存大的文件(内存4G,文件 8G,读取大文件) ?

我们假设数据可以一行一行地处理,并且数据之间的没有相关性,那么我们有两种方法读取该文件。

1. 使用生成器 yield 逐行读取到内存

def read_file(filename):
    with open(filename, 'r', encoding='utf-8') as f:
        for line in f:
            yield line

line_content = read_file(filename="/data.txt")
for line in line_content:
    print line

逐行读入,频繁的 IO 操作会导致处理效率很低。

2. 使用 pandas 的 read_csv 函数

pandas 模块 read_csv 函数 chunksize 参数可以设置每次读取的行数。

import pandas as pd

def read_file(filename, sep=',', chunksize=5):
    reader = pd.read_csv(filename, sep=sep, chunksize=chunksize)
    while True:
        try:
            yield reader.get_chunk()
        except StopIteration:
            break

if __name__ == '__main__':
    g = read_file('/data.txt',sep="::")
    for c in g:
        print(c)

你可能感兴趣的:(Python)