5

使用 Python 的 csv 模块,是否可以将整个大型 csv 文件读入惰性列表?

我问这个,因为在 Clojure 中有 csv 解析模块,它们将解析一个大文件并返回一个惰性序列(序列序列)。我只是想知道这在 Python 中是否可行。

4

4 回答 4

7

除非我误解了你,否则这是默认行为,这是读取 csv 文件的本质:

import csv

def lazy(csvfile):
    with open(csvfile) as f:
        r = csv.reader(f)
        for row in r:
            yield row

一次给你一排。

于 2012-06-19T21:16:50.040 回答
6

csv模块reader默认是惰性的。

它将一次从文件中读取一行,将其解析为一个列表,然后返回该列表。

于 2012-06-19T21:16:34.443 回答
2

Python 的阅读器或 DictReader 是生成器。只有在调用对象的 next() 方法时才会产生一行。

于 2012-06-19T21:18:27.453 回答
1

csv 模块确实会延迟加载数据,一次加载一行。

于 2012-06-19T21:16:47.217 回答