【发布时间】:2022-01-16 21:45:37
【问题描述】:
我找到了this code,它很适合我,我把它改成了这个:
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
这就是我的哈希数组的样子:
[
{:Name => "John", :Age => 26, :Country => America},
{:Name => "Ivan", :Age => 34, :Country => Russia},
{:Name => "Pablo", :Age => 20, :Country => Columbia}
]
但问题是每次我调用此方法时 - 它都会重写整个文件。如果我想保存此标头并在每次迭代中添加新信息,如何更改它?
【问题讨论】:
-
以 append 模式打开文件 (
mode: 'a') 并在后续写入时跳过写入标题行。 -
写“mode:'a'”而不是's'?以及如何在后续写入中跳过写入标头?
-
不,
s是您的内容。是File.write("#{file_name}.csv", s, mode: 'a'),详情请咨询docs。对于标题:您最初可以检查文件是否存在。如果不是,你写标题行。如果它存在,则假设标题在那里并且只写值。 -
感谢您解决了我的问题! :)
-
@gurman "a" 是 "append" 的缩写。