问题描述
我需要处理一个较大的csv文件(〜2GB)。由于内存不足的限制,我正在使用chunksize选项一次在内存中加载一块csv,而不是加载整个csv文件。我需要标识csv的最后一块,并从该块中跳过n行。 在这一点上,我不确定如何实现这一点。 任何帮助表示赞赏。 预先感谢!
解决方法
要执行此操作,您需要知道文件的大小,然后将其除以块大小,然后以这种方式确定最后一个块。不幸的是,您需要浏览整个文件以找出总数。但是,您可以通过较小的内存来做到这一点。
f = open(file)
i = -1
for i,l in enumerate(f):
pass
在此循环结束时,i+1
是文件的大小。使用Dask并行处理大文件是另一种选择,但是我不确定是否可以获取文件的最后一块。