"\t", :headers => headers, :quote_char -6ren">
gpt4 book ai didi

ruby - 如何检测 CSV (ruby) 中的最后一行

转载 作者:数据小太阳 更新时间:2023-10-29 07:55:17 24 4
gpt4 key购买 nike

data = IO::read(file).scrub("")
CSV.parse(data, {:col_sep => "\t", :headers => headers, :quote_char => '_'}) do |row|
# how to detect last line of CSV?
end

我有一个巨大的 CSV 文件需要清理。它有多行适用于一个数据库对象。在我的代码中,我收集了适用于一个对象的所有行,然后将它们传递给将处理它们的类。

如果我能检测到 CSV 中的最后一行,那将非常有帮助,这样我就可以确保发送最后一个集合。

最佳答案

这是一个基于搜索的解决方案。这针对较大的文件进行了优化。无论文件大小如何,打印 CSV 的最后一行都只需要一点时间:

#!/usr/bin/env ruby

require 'csv'

f = File.open('test.csv')
f.seek(-2, IO::SEEK_END) #pos -1 is newline at end of file
last_line = nil

while f.pos > 0
if f.getc == "\n"
last_line = f.read
break
else
f.pos -= 2 #getc advances position by 1
end
end

row = CSV.parse_line(last_line.scrub(""), col_sep: "\t")
p row

f.close

关于ruby - 如何检测 CSV (ruby) 中的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35611916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com