2010-08-17 22 views
20

Al usar Ruby 1.9 y CSV lib, parece que no puedo agregar una fila. El ejemplo en la documentación abre el archivo y sobrescribe la fila. ¿Cuál es la forma correcta de agregar filas al documento?Añadir fila al archivo csv Ruby 1.9 CSV lib

Ejemplo de documentación:

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

Respuesta

29

creo que se puede cambiar la abiertos al uso ab:

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

que suele usarse la siguiente para escribir en un archivo CSV (o cualquier archivo)

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

Tenga en cuenta que 'a +' es para leer * y * [escribir/adjuntar] (http://ruby-doc.org/docs/ProgrammingRuby/html/ref_c_io.html). Si solo necesita agregar, entonces 'a' es suficiente. También puede usar [File :: APPEND] (http://ruby-doc.org/docs/ProgrammingRuby/html/ref_c_file.html), posiblemente en combinación con otras configuraciones de modo. –

+0

Siempre debemos usar un + porque creará un archivo si no existe. – user1735921

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

AFAIK CSV :: Writer es [no está disponible en ruby ​​1.9] (http://stackoverflow.com/a/2140482/514483) – robd

Cuestiones relacionadas