Go言語でcsvファイルの読み書き

昨日の延長で、csvファイルの読み書きを試してみた。
encoding/csvパッケージを使う。


以下はcsvファイルを読み込んでtsvにして出力するサンプル

package main

import (
	"encoding/csv"
	"flag"
	"io"
	"os"
)

func main() {
	flag.Parse()

	var reader *csv.Reader
	var writer *csv.Writer
	var columns []string
	var err error

	// ファイルを読み込みモードでオープン
	read_file, _ := os.OpenFile(flag.Arg(0), os.O_RDONLY, 0600)
	// Readerを用意
	reader = csv.NewReader(read_file)

	// ファイルを書き込みモードでオープン(ファイルがなかったら作成する)
	write_file, _ := os.OpenFile(flag.Arg(1), os.O_WRONLY|os.O_CREATE, 0600)
	// Writerを書き込みモードでオープン
	writer = csv.NewWriter(write_file)

	// デリミタをタブに
	writer.Comma = '\t'

	for {
		// 1行読み出す
		columns, err = reader.Read()
		// EOFなら終了
		if err == io.EOF {
			return
		}

		// ファイルに書き出す
		writer.Write(columns)
		writer.Flush()
	}
}