更多的系統管理員(廚師)比紅寶石的傢伙,所以這可能是一個五分鐘的修復。 我正在寫一個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例如,在追加模式打開,不寫模式。 –