golang 读写csv
在实际的开发工作中,我们经常会遇到需要读取、写入csv文件的情况。CSV(Comma-Separated Values)是一种常见的数据格式,它用逗号将不同字段的值分隔开来。在Go语言中,我们可以使用标准库encoding/csv
来实现csv文件的读写操作。
读取CSV文件
读取CSV文件的步骤如下:
1. 打开csv文件
2. 创建一个Reader
对象
3. 读取csv文件中的数据
下面是一个简单的示例代码,演示如何读取名为data.csv
的csv文件中的数据,并将其打印出来。
package main
import (
"encoding/csv"
"fmt"
"os"
)
func main() {
// 打开csv文件
file, err := os.Open("data.csv")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
// 创建一个Reader对象
reader := csv.NewReader(file)
// 读取csv文件中的数据
records, err := reader.ReadAll()
if err != nil {
fmt.Println("Error:", err)
return
}
// 打印csv文件中的数据
for _, record := range records {
for _, value := range record {
fmt.Printf("%s\t", value)
}
fmt.Println()
}
}
假设data.csv
文件内容如下:
Tom,22,New York
Jack,25,San Francisco
Alice,28,Los Angeles
运行上述示例代码后,输出如下:
Tom 22 New York
Jack 25 San Francisco
Alice 28 Los Angeles
写入CSV文件
写入CSV文件的步骤如下:
1. 创建一个Writer
对象
2. 写入数据到csv文件
3. 关闭csv文件
下面是一个简单的示例代码,演示如何将一组数据写入到名为output.csv
的csv文件中。
package main
import (
"encoding/csv"
"fmt"
"os"
)
func main() {
// 创建一个Writer对象
file, err := os.Create("output.csv")
if err != nil {
fmt.Println("Error:", err)
return
}
defer file.Close()
writer := csv.NewWriter(file)
// 写入数据到csv文件
data := [][]string{
{"Name", "Age", "City"},
{"Tom", "22", "New York"},
{"Jack", "25", "San Francisco"},
{"Alice", "28", "Los Angeles"},
}
for _, record := range data {
err := writer.Write(record)
if err != nil {
fmt.Println("Error:", err)
return
}
}
writer.Flush()
if err := writer.Error(); err != nil {
fmt.Println("Error:", err)
return
}
}
运行上述示例代码后,程序会将数据写入到output.csv
文件中。可以打开output.csv
文件查看写入的数据。
通过以上示例代码,我们可以看到在Go语言中使用encoding/csv
标准库可以很方便地实现csv文件的读写操作。在实际应用中,我们可以根据具体需求对读取和写入csv文件进行更复杂的处理和操作。