[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를 사용하는 개발자들에게 많은 도움이 될 것입니다.