更新下紅寶石在新的子目錄
創建CSV文件,我有一個是通過一些循環JSON和創建與數據的多個.CSV文件的Ruby腳本。目前它只是創建與腳本/ JSON相同的文件夾。但是,我希望它在新創建的時間戳子目錄中創建文件。
我知道我需要require 'fileutils.rb'
和我創建time = Time.now.strftime("%Y%m%d%H%M%S%")
和outdir = FileUtils.mkdir(time)
我添加了這些給我的腳本,它成功地創建了目錄,但隨後打破。
創建看起來像這樣的文件的腳本的結束,我認爲這個問題是我去有關移動到目錄/在新目錄中創建文件的方式:
...
outdir = FileUtils.mkdir(time)
FileUtils.cd(outdir) do #I think this is wrong
filename = k+".csv"
out = CSV.open(filename, "w")
csv.each{|item| out << item}
out.close()
end
}
- -UPDATE ---
它出現的問題是,當我指定的目錄路徑和CSV模塊。我收到錯誤Invalid argument - ["20130312113853"]/regions.csv (Errono::EINVAL)
當我看CSV模塊文檔我看你可以創建/在另一個direcotry書面形式向他們申報的路徑讀取的CSV但沒有。這是我第一次使用這個模塊。有誰知道如何解決這個問題?
我想我需要csv = []
之前聲明爲CSV的目錄路徑?
Fullscript:
#!/usr/bin/env ruby
require 'json'
require 'csv'
require 'fileutils.rb'
file = "parse_me.json"
ff = JSON.parse(File.open(file).read)
time = Time.now.strftime("%Y%m%d%H%M%S")
outdir = FileUtils.mkdir(time)
begin
ff.each{|k,h|
csv = []
csv << h[0].keys
h.each{|arr|
holder = []
arr.each_value{|v|
holder << v
}
csv << holder
}
out = CSV.open("#{outdir}/#{k}.csv", "w")
csv.each{|item| out << item}
out.close()
}
end
爲什麼不包括目錄名稱爲CSV打開? 'out = CSV.open(「#{outdir} /#{k} .csv」,「w」)' – 2013-03-12 17:40:15
@YuriyGolobokov我做了那個編輯,但我認爲這個問題是我聲明它的地方。我用更多的信息和完整的腳本更新了這篇文章。 – tehaaron 2013-03-12 18:52:45