我想写一个函数,生成一个csv文件的无序行,该文件太大,无法放入内存(~2500万行)
我如何构建一个生成器以逐行生成数据,但不以csv文件中显示的顺序生成数据
是否可以在惰性生成器函数中随机化/洗牌行
def readCSV(csvname, shuffle=True):
for row in open(csvname, "r"):
if shuffle:
# Do something to shuffle the order of the rows
# But I dont' know how to do this.
yield row
Tags:
这可以通过首先为大型CSV文件创建索引来实现。除非更改数据,否则只需执行一次。索引将包含所有换行符所在的文件中的偏移量
然后,通过首先寻找所需的偏移量并在中读取一行,就可以轻松地读入随机行
例如:
同样的想法也可以用于从随机起始行读取或以无序顺序读取
显然,来回搜索不会像按顺序读取文件那样快,但它应该比从一开始读取要快得多
相关问题 更多 >
编程相关推荐