更多的系统管理员(厨师)比红宝石的家伙,所以这可能是一个五分钟的修复。 我正在写一个ruby脚本,从多个文件中提取json数据,解析它,并将所需的字段写入一个.csv文件。基本上拉动aws帐户的元数据并将其设置为会计友好格式。从json.parse向csv追加新行
从另一个stackoverflow获得了很多关于如何解决单个文件json.parse help的问题的帮助。
我的问题是,我试图从数组中的多个JSON文件中提取相同的数据。我可以通过下面的代码来遍历每个文件。
require 'csv'
require "json"
delim_file = CSV.open("delimited_test.csv", "w")
aws_account_list = %w(example example2)
aws_account_list.each do |account|
json_file = File.read(account.to_s + "_aws.json")
parsed_json = JSON.parse(json_file)
delim_file = CSV.open("delimited_test.csv", "w")
# This next line could be a problem if you ran this code multiple times
delim_file << ["EbsOptimized", "PrivateDnsName", "KeyName", "AvailabilityZone", "OwnerId"]
parsed_json['Reservations'].each do |inner_json|
inner_json['Instances'].each do |instance_json|
delim_file << [[instance_json['EbsOptimized'].to_s, instance_json['PrivateDnsName'], instance_json['KeyName'], instance_json['Placement']['AvailabilityZone'], inner_json['OwnerId']],[]]
end
delim_file.close
end
end
但是,每当我这样做时,它会覆盖每次到.csv文件中的同一行。我已经尝试在数组的末尾添加一个\ n字符串,将该数组转换为带有哈希的字符串并执行\ n,但所做的只是将一行添加到它覆盖的同一行。
我该如何去编写它读取每个json文件,然后将每个文件元数据附加到新行?这看起来像是编写正确循环的简单例子,但我无法弄清楚。
http://stackoverflow.com/q/7085595/438992例如,在追加模式打开,不写模式。 –