[go] Go의 encoding/csv 패키지

Go 언어는 표준 라이브러리인 encoding/csv 패키지를 통해 CSV 파일을 읽고 쓰는 기능을 제공합니다. 이 패키지를 사용하면 간단한 코드로 CSV 파일을 손쉽게 처리할 수 있습니다.

CSV 파일 읽기

CSV 파일을 읽을 때는 csv.NewReader 함수를 사용합니다. 이 함수는 io.Reader를 입력으로 받아 새로운 CSV 리더를 생성합니다. 생성된 CSV 리더를 통해 Read 메서드를 호출하여 한 줄씩 CSV 파일을 읽을 수 있습니다.

package main

import (
	"encoding/csv"
	"fmt"
	"os"
)

func main() {
	file, err := os.Open("data.csv")
	if err != nil {
		fmt.Println("Error:", err)
		return
	}
	defer file.Close()

	reader := csv.NewReader(file)
	lines, err := reader.ReadAll()
	if err != nil {
		fmt.Println("Error:", err)
		return
	}

	for _, line := range lines {
		fmt.Println(line)
	}
}

위 예제에서는 os.Open 함수를 통해 CSV 파일을 열고, csv.NewReader를 사용하여 CSV 리더를 생성한 후 ReadAll 메서드를 호출하여 모든 줄을 읽어와 출력하고 있습니다.

CSV 파일 쓰기

CSV 파일을 쓸 때는 csv.NewWriter 함수를 사용합니다. 이 함수는 io.Writer를 입력으로 받아 새로운 CSV 작성기를 생성합니다. 생성된 CSV 작성기를 통해 Write 메서드를 호출하여 CSV 파일에 데이터를 쓸 수 있습니다.

package main

import (
	"encoding/csv"
	"os"
)

func main() {
	file, err := os.Create("data.csv")
	if err != nil {
		panic(err)
	}
	defer file.Close()

	writer := csv.NewWriter(file)
	defer writer.Flush()

	data := [][]string{
		{"Name", "Age", "City"},
		{"Alice", "25", "New York"},
		{"Bob", "30", "San Francisco"},
	}

	for _, record := range data {
		err := writer.Write(record)
		if err != nil {
			panic(err)
		}
	}
}

위 예제에서는 os.Create 함수를 통해 CSV 파일을 생성하고, csv.NewWriter를 사용하여 CSV 작성기를 생성한 후 Write 메서드를 호출하여 데이터를 CSV 파일에 쓴 예제입니다.

결론

Go의 encoding/csv 패키지를 사용하면 CSV 파일을 읽고 쓰는 작업이 간단해집니다. 데이터를 처리하고 분석하는데 유용한 이러한 기능은 Go를 사용하는 개발자들에게 많은 도움이 될 것입니다.

Go 표준 라이브러리 - encoding/csv