es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agregar una matriz de hashes en un archivo CSV?

Encontré este código y me encaja perfectamente, lo transformé en este:

def write_in_file(file_name, hash)
    column_names = hash.first.keys
    s=CSV.generate do |csv|
        csv << column_names
        hash.each do |x|
            csv << x.values
        end
    end
    File.write("#{file_name}.csv", s)
end

Así es como se ve mi array de hashes:

[
  {:Name => "John", :Age => 26, :Country => America},
  {:Name => "Ivan", :Age => 34, :Country => Russia},
  {:Name => "Pablo", :Age => 20, :Country => Columbia}
]

Pero el problema es que cada vez que llamo a este método, sobrescribe todo el archivo. ¿Cómo puedo cambiarlo si quiero guardar estos encabezados y agregar nueva información en cada iteración?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para agregar nueva información al archivo existente en lugar de sobrescribirlo, puede modificar la línea File.write para utilizar la opción a en lugar de la opción predeterminada w. La opción a significa “añadir” y agregará nuevos datos al final del archivo:

    File.open("#{file_name}.csv", "a") do |f|
      f.write(s)
    end
    

    Esto abrirá el archivo en modo “añadir” y escribirá los datos CSV al final del archivo. Ahora, cada vez que llame al método, se agregarán nuevos datos al archivo existente en lugar de sobrescribirlo.

Comments are closed.