如何使用Ruby删除一行csv文件?

时间:2012-02-16 10:56:45

标签: ruby file-io csv

我有一个大的csv。我想删除文件的第一行。这是怎么做到的?我不想将每一行复制到一个数组中,并为前一个索引重写它们并删除第一个。肯定有更好的办法。 (也许用fastcsv?怎么样?)

4 个答案:

答案 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格式