csv数据可以变得懒惰吗?

时间:2012-06-19 21:13:18

标签: python csv clojure lazy-evaluation

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

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

4 个答案:

答案 0 :(得分:4)

csv模块的reader默认为懒惰。

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

答案 1 :(得分:4)

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

import csv

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

一次给你一行。

答案 2 :(得分:3)

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

答案 3 :(得分:1)

csv模块确实懒得加载数据,一次一行。