我有一个大的csv。我想删除文件的第一行。这是怎么做到的?我不想将每一行复制到一个数组中,并为前一个索引重写它们并删除第一个。肯定有更好的办法。 (也许用fastcsv?怎么样?)
答案 0 :(得分:2)
如果你不介意炮轰命令行,它会特别有效:
system("tail -n +2 #{input} > #{output}")
答案 1 :(得分:1)
类似的东西:
source=File::open("source","r")
dest=File::open("dest","w")
source.each_line do |line|
next if f.lineno == 1
dest.write(line)
end
source.close
dest.close
答案 2 :(得分:0)
将文件复制到另一个文件,省略要删除的行。您不必将文件加载到数组中,只需在同一循环中逐行读取和写入。
答案 3 :(得分:0)
你的意思是这样吗?
source_path = 'liner.txt'
open source_path do |input|
input.gets
open "#{source_path}.header_removed", 'w' do |output|
input.each do |line|
output << line
end
end
end
但是,此代码需要简单的CSV格式