class CsvAccess def initilize(file) @file = file end #### データ読込 def read_csv_data data = [] begin fh = open(@file, "r") c = 0 fh.each do |line| line = line.gsub(/(\n|\r)/, '') # data[c] = line.split(/,/) # data[c] = line.scan(/(?:"[^"]*"|[^",])+/) data[c] = line.scan(/(?:"(?:\\"|[^"])*"|\\.|[^",])+/) c += 1 end rescue return [true, []] ensure fh.close end [false, data] end #### データ書込 def write_csv_data(data) begin fh = open(@file, "w") data.each do |line| fh.print line.join(",") + "\n" end rescue return true ensure fh.close end false end #### データ追加 def add_csv_data(data) begin fh = open(@file, "a") fh.write data.join(",") + "\n" rescue return true ensure fh.close end false end end ## 簡単な使い方 # ファイル名が /home/minami/test.csv の場合 # まずnewします csv = CsvAccess.new("/home/minami/test.csv") # csvのデータを変数に入れます。 # この時点で全部読んでいるのででっかいデータは厳しいです。 #(データは配列です。) csv_data = csv.read_csv_data # 変更します。 csv_data[0][0] = "test" # 書き込む csv.write_csv_data(csv_data) # 追加する add_csv_data = ["test2", "hello", "world"] csv.add_csv_data(add_csv_data) # わかっているバグ # # ""で囲われているcsvデータに対応していません。