csv読み込んで1レコードを1ファイルに吐き出す

ruby1.9
以下のようなcsvファイルを読み込みこんで、レコード毎に1ファイル書き出す。

post_name, post_title, post_content
aaa, bbb, ccc
aaa, bbb, ccc
aaa, bbb, ccc
require "csv"
require "FileUtils"

csv = CSV.open("park.csv", "r") 
csv.shift

dir = "page"
FileUtils.mkdir_p("./#{dir}")

csv.each do |row|
  open("dir/#{row[0]}.html", "w").write(row[2])
end
  • ヘッダー行は無視したいので、破壊的なshiftを使っている。
  • FileUtilsは、Dirクラスよりもいけてるやつでmkdirメソッドを使った時に既にディレクトリが作成されていても正常に終わったり、再帰的にディレクトリを作ってくれる。
  • エスケープ文字を置換する必要があるのかと思ったけど何もする必要なかった。