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?
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óna
en lugar de la opción predeterminadaw
. La opcióna
significa “añadir” y agregará nuevos datos al final del archivo: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.