更新下红宝石在新的子目录
创建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