UPDATE 루비가 새로운 서브 디렉토리
아래에서 CSV 파일을 만들 좀 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 ---
dir 경로와 CSV 모듈을 지정할 때 문제가있는 것처럼 보입니다. 오류가 발생했습니다 Invalid argument - ["20130312113853"]/regions.csv (Errono::EINVAL)
CSV 모듈 문서를 볼 때 CSV를 읽을 수있는 경로를 선언 할 수 있지만 다른 디렉토리에 작성/쓰기하는 방법은 없습니다. 이 모듈을 처음 사용했습니다. 누구든지이 접근 방법을 알고 있습니까?
csv = []
전에 csv의 dir 경로를 선언해야한다고 생각하십니까?
Fullscript : FileUtils.mkdir
당신 can create one or more directories in a same time, it returns an Array
of the directory created. 같은 Array
을 반환하기 때문에
#!/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에있는 dirname이 열려 포함하지 작동해야합니까? 'Out = CSV.open ("# {outdir}/# {k} .csv", "w")' –
@YuriyGolobokov 나는 그 편집을 만들었지 만 문제는 내가 선언하고있는 곳이라고 생각한다. 더 많은 정보와 전체 스크립트로 게시물을 업데이트했습니다. – tehaaron