将行添加到csv文件Ruby 1.9 CSV库文件

问题描述:

使用Ruby 1.9和CSV库文件,我似乎无法追加行。文档中的示例打开文件,并覆盖该行。将行附加到文档的正确方法是什么?从文档将行添加到csv文件Ruby 1.9 CSV库文件

例子:

require 'csv' 
CSV.open("path/to/file.csv", "wb") do |csv| 
    csv << ["row", "of", "CSV", "data"] 
    csv << ["another", "row"] 
    # ... 
end 

我想你可以改变打开使用ab

CSV.open("t.csv", "ab") do |csv| 

我通常会使用以下方法来写一个C​​SV文件(或任何文件)

File.open("filename", 'a+') {|f| f.write("datatowrite\n)} 
+4

请注意,'a +'用于读*和* [写/附加](http://ruby-doc.org/docs/ProgrammingRuby/html/ref_c_io.html)。如果你只需要追加,那么'a'就足够了。您也可以使用[File :: APPEND](http://ruby-doc.org/docs/ProgrammingRuby/html/ref_c_file.html),可能结合其他模式设置。 – 2010-08-18 07:31:49

+0

我们应该总是使用+,因为如果不存在,它将创建文件。 – user1735921 2017-10-10 12:30:41

File.open('filename', 'a'){ |outfile| 
    CSV::Writer.generate(outfile) do |csv| 
    csv << ['c1', nil, '', '"', "\r\n", 'c2'] 
    end 
} 
+1

AFAIK CSV :: Writer是[不可用于Ruby 1.9](http://stackoverflow.com/a/2140482/514483) – robd 2013-06-19 09:43:06