我正在解决一个小问题,并会就如何解决它提供一些建议:
给定一个列数和行数未知的 csv 文件,输出包含值的列列表以及每个值重复的次数。不使用任何库。
如果文件很小,这应该不是问题,但是当它是几场演出时,我得到 NoMemoryError:无法分配内存。有没有办法创建哈希并从磁盘读取而不是将文件加载到内存?你可以在 Perl 中使用绑定哈希来做到这一点
编辑: IO#foreach 会将文件加载到内存中吗? File.open(文件名).each 怎么样?
一次一行读取文件,并在读取时丢弃每一行:
open("big.csv") do |csv|
csv.each_line do |line|
values = line.split(",")
# process the values
end
end
使用此方法,您永远不会耗尽内存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)