使用 Python 的 csv 模块,是否可以将整个大型 csv 文件读入惰性列表?
我问这个,因为在 Clojure 中有 csv 解析模块,它们将解析一个大文件并返回一个惰性序列(序列序列)。我只是想知道这在 Python 中是否可行。
使用 Python 的 csv 模块,是否可以将整个大型 csv 文件读入惰性列表?
我问这个,因为在 Clojure 中有 csv 解析模块,它们将解析一个大文件并返回一个惰性序列(序列序列)。我只是想知道这在 Python 中是否可行。
除非我误解了你,否则这是默认行为,这是读取 csv 文件的本质:
import csv
def lazy(csvfile):
with open(csvfile) as f:
r = csv.reader(f)
for row in r:
yield row
一次给你一排。
该csv
模块reader
默认是惰性的。
它将一次从文件中读取一行,将其解析为一个列表,然后返回该列表。
Python 的阅读器或 DictReader 是生成器。只有在调用对象的 next() 方法时才会产生一行。
csv 模块确实会延迟加载数据,一次加载一行。