【问题标题】:How do I read data into Python but not entirely into memory?如何将数据读入 Python 但不完全读入内存?
【发布时间】:2015-06-04 00:41:31
【问题描述】:

我需要解析一个包含大约 100,000 条记录的文件。有没有办法在不将整个文件加载到内存的情况下做到这一点? csv 模块是否已经这样做了(即,不将整个文件加载到内存中)?如果这很重要,我计划在 IDLE 中执行此操作。

【问题讨论】:

    标签: python python-2.7 csv ram


    【解决方案1】:

    我从来没有使用过 cvs 模块,但是你会想要考虑使用生成器,这将允许你一次处理一条记录,而无需一次读取整个文件。例如,对于一个文件,您可以执行类似...

    def read_file(some_file):
        for line in open(some_file):
            yield line
    
    all_lines = read_file("foo")
    results = process(all_lines)
    

    all_lines 将是一个生成器,每次被引用时都会返回一行,如下所示:

    for line in all_lines:
        ...
    

    我想你也可以使用 cvs 模块来做到这一点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-19
      • 2018-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多