Go语言通过encoding/csv包高效处理CSV文件读写。首先使用os.Open打开文件,结合csv.NewReader读取数据,可调用ReadAll()一次性读取或Read()逐行读取以节省内存;写入时用os.Create创建文件,csv.NewWriter写入数据,需注意调用Flush()确保数据落盘;支持自定义分隔符,如设置Comma=’;’处理分号分隔文件,适用于欧洲格式CSV,广泛用于配置、报表等场景。

Go语言通过标准库
encoding/csv
提供了对CSV文件的读取和写入支持,使用简单且高效。下面通过具体示例展示如何用Golang处理CSV文件。
读取CSV文件
使用
csv.NewReader
可以从文件或任意
io.Reader
中读取CSV数据。通常配合
os.Open
打开本地文件。
示例:读取一个名为
data.csv
的文件内容:
// 导入必要包
import (
“encoding/csv”
“os”
“fmt”
)
// 打开CSV文件
file, err := os.Open(“data.csv”)
if err != nil {
log.Fatal(err)
}
defer file.Close()
// 创建csv reader
reader := csv.NewReader(file)
// 读取所有记录
records, err := reader.ReadAll()
if err != nil {
log.Fatal(err)
}
// 遍历输出每行
for _, record := range records {
fmt.Println(record)
}
如果想逐行读取以节省内存(适合大文件),可使用
Read()
方法:
立即学习“go语言免费学习笔记(深入)”;
record, err := reader.Read()
for err == nil {
fmt.Println(record)
record, err = reader.Read()
}
写入CSV文件
使用
csv.NewWriter
可以将数据写入文件或任何
io.Writer
目标。
示例:创建并写入
output.csv
文件:
// 创建或清空文件
file, err := os.Create(“output.csv”)
if err != nil {
log.Fatal(err)
}
defer file.Close()
// 创建csv writer
writer := csv.NewWriter(file)
defer writer.Flush() // 确保数据写入磁盘
// 要写入的数据
data := [][]string{
{“Name”, “Age”, “City”},
{“Alice”, “25”, “Beijing”},
{“Bob”, “30”, “Shanghai”},
}
// 逐行写入
for _, row := range data {
err := writer.Write(row)
if err != nil {
log.Fatal(err)
}
}
注意:调用
writer.Flush()
非常重要,否则缓冲区中的数据不会真正写入文件。
自定义分隔符
默认情况下,
csv.Reader
和
csv.Writer
使用逗号作为字段分隔符。若需使用其他字符(如分号或制表符),可手动设置。
例如,处理以分号分隔的CSV:
reader := csv.NewReader(file)
reader.Comma = ‘;’
writer := csv.NewWriter(file)
writer.Comma = ‘;’
常见场景包括欧洲格式CSV常使用
;
避免与小数点
,
冲突。
基本上就这些。利用
encoding/csv
包,Golang能轻松完成结构化文本数据的导入导出,适合配置、报表或数据迁移等任务。
以上就是Golangencoding/csv读取与写入CSV文件示例的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1405378.html
微信扫一扫
支付宝扫一扫