UPDATE НИЖЕрубин создать CSV-файлы в новой папке
У меня есть сценарий Ruby, который зацикливание через некоторые JSON и создание нескольких файлов .CSV с данными. В настоящее время он просто создает те, которые находятся в той же папке, что и скрипт/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, я вижу, что вы можете объявить путь для чтения CSV, но ничего не создавать и писать для них в другом обращении. Это первый раз, когда я использовал этот модуль. Кто-нибудь знает, как подойти к этому?
Я думаю, что мне нужно объявить путь dir для 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 ")' –
@YuriyGolobokov Я сделал это редактирование, но я думаю, что проблема в том, где я его объявляю. Я обновил сообщение с дополнительной информацией и полным скриптом. – tehaaron