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

如何使用Ruby删除一行csv文件?,ruby,file-io,csv,Ruby,File Io,Csv,我有一个大房间。我想删除文件的第一行。这是怎么做到的?我不想将每一行复制到一个数组中,然后为上一个索引重写它们,然后删除第一个索引。一定有更好的办法。(可能使用fastercsv?如何?将文件复制到另一个文件中,忽略要删除的行。您不必将文件加载到数组中,只需在同一循环中逐行读取和写入。将文件复制到另一个文件中,忽略要删除的行。您不必将文件加载到数组中,只需在同一循环中逐行读写即可。类似于: source=File::open("source","r") dest=File::open("dest

我有一个大房间。我想删除文件的第一行。这是怎么做到的?我不想将每一行复制到一个数组中,然后为上一个索引重写它们,然后删除第一个索引。一定有更好的办法。(可能使用fastercsv?如何?

将文件复制到另一个文件中,忽略要删除的行。您不必将文件加载到数组中,只需在同一循环中逐行读取和写入。

将文件复制到另一个文件中,忽略要删除的行。您不必将文件加载到数组中,只需在同一循环中逐行读写即可。

类似于:

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
比如:

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

如果您不介意使用命令行,那么它特别有效:

system("tail -n +2 #{input} > #{output}")

如果您不介意使用命令行,那么它特别有效:

system("tail -n +2 #{input} > #{output}")
你是说像这样

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
source_path='liner.txt'
开源|路径do |输入|
input.get
打开“#{source_path}.header_removed”,'w'do|输出|
输入每个do |行|
输出你是说像这样

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
source_path='liner.txt'
开源|路径do |输入|
input.get
打开“#{source_path}.header_removed”,'w'do|输出|
输入每个do |行|

输出不是特定于Rails的问题。不是特定于Rails的问题。错误,整个源文件被读入提问者希望避免的内存。我的错,我读问题太快了。这是一个修改后的版本,逐行读取文件。您没有关闭文件句柄。要么显式关闭它们,要么使用
文件的块形式。打开
。错误,整个源文件被读入提问者希望避免的内存。我的错,我读问题太快了。这是一个修改后的版本,逐行读取文件。您没有关闭文件句柄。可以显式关闭它们,也可以使用
文件的块形式。打开