新闻中心
Golang如何操作CSV文件_Golang CSV读取与写入示例
Go语言通过encoding/csv包实现CSV读写,先使用os.Open打开文件并用csv.NewReader读取数据,可调用ReadAll一次性读取或Read逐行解析;写入时用os.Create创建文件,csv.NewWriter写入数据,需调用Flush确保数据落盘;库自动处理含逗号、引号的字段;大文件应逐行读取以节省内存。

Go语言通过标准库encoding/csv提供了对CSV文件的读取和写入支持,使用简单且高效。下面介绍如何用Golang读取和写入CSV文件,并附上实用示例。
读取CSV文件
使用csv.NewReader()可以从文件或字符串中读取CSV数据。通常配合os.Open打开文件,然后逐行读取记录。
示例:从文件读取CSV内容
// main.go package main import ( "encoding/csv" "fmt" "log" "os" ) func readCSV(filename string) { file, err := os.Open(filename) if err != nil { log.Fatal("无法打开文件:", err) } defer file.Close() reader := csv.NewReader(file) records, err := reader.ReadAll() if err != nil { log.Fatal("读取CSV失败:", err) } for _, record := range records { fmt.Println(record) // 每一行是一个[]string } } func main() { readCSV("data.csv") }假设data.csv内容如下:
运行程序将输出:
[姓名 年龄 城市] [Alice 25 北京] [Bob 30 上海]写入CSV文件
使用csv.NewWriter()可以将数据写入文件或任何实现了io.Writer接口的对象。
示例:写入CSV文件
package main import ( "encoding/csv" "log" "os" ) func w
riteCSV(filename string) {
file, err := os.Create(filename)
if err != nil {
log.Fatal("创建文件失败:", err)
}
defer file.Close()
writer := csv.NewWriter(file)
defer writer.Flush() // 确保所有数据写入磁盘
// 写入表头
header := []string{"姓名", "年龄", "城市"}
if err := writer.Write(header); err != nil {
log.Fatal("写入表头失败:", err)
}
// 写入多行数据
data := [][]string{
{"Alice", "25", "北京"},
{"Bob", "30", "上海"},
{"Charlie", "35", "广州"},
}
if err := writer.WriteAll(data); err != nil {
log.Fatal("写入数据失败:", err)
}
}
func main() {
writeCSV("output.csv")
}
执行后会生成output.csv,内容与前面示例一致。
GoEnhance
全能AI视频制作平台:通过GoEnhance AI让视频创作变得比以往任何时候都更简单。
347
查看详情
处理带引号或特殊字符的数据
CSV库会自动处理包含逗号、换行或引号的字段。只要使用Write或WriteAll,内部会正确添加引号并转义。
例如:
{"张三", "28", "深圳,南山区"}会被写成:
张三,28,"深圳,南山区"读取时也能正确解析为三个字段。
逐行读取大文件
对于大CSV文件,不建议使用ReadAll()一次性加载全部内容,应使用Read()逐行处理以节省内存。
基本上就这些。Golang操作CSV非常直接,结合os和csv包就能完成大多数任务。注意及时关闭文件和调用writer.Flush(),避免数据丢失。
以上就是Golang如何操作CSV文件_Golang CSV读取与写入示例的详细内容,更多请关注其它相关文章!
# 大文件
# 扬中seo网站推广
# 郑州营销系统推广
# 江西鹤壁网站推广
# 去哪儿SEO营销
# 兴安盟湖南网站优化推广
# 网站推广幸运四叶草
# 泡爪营销推广策略有哪些
# 新加坡红酒网站推广方案
# 大连seo推广方法
# 羊皮卷营销推广心得
# 相关文章
# 也能
# 就能
# go
# 是一个
# 南山
# 深圳
# 北京
# 标准库
# 数据丢失
# csv文件
# 上海
# ai
# csv
# go语言
# golang
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
AO3最新官网入口公告_2025AO3镜像站实时查询方法
EMS快递官网app_中国邮政速递物流手机客户端
Google翻译怎么语音输入_Google翻译语音输入功能使用与设置方法
解决深度学习模型训练初期异常高损失与完美验证准确率问题
在Socket.IO连接中实现Access Token自动更新与动态重连
在哪找SublimeJ远程工具_SFTP插件配置教程
天眼查怎么看公司融资情况 天眼查企业融资历史查询步骤【攻略】
Golang如何使用bytes.Split分割字节切片_Golang bytes切片分割方法
DLsite中文平台入口 DLsite官网内容在线查看
sublime如何处理大型CSV文件的列对齐_sublime高级表格编辑插件指南
必由学登录入口 必由学官方网站在线访问链接
c++20的std::jthread是什么_c++可中断线程与RAII式管理
J*a编写用户注册与登录功能_掌握字符串与验证逻辑
汽水音乐车机版横屏版7.1 汽水音乐车机版横屏版下载入口
中兴BladeV30怎样用测距估书架层高_iPhone中兴BladeV30测距估书架层高【家装参考】
css元素hover动画延迟生效怎么办_使用animation-delay调整触发时间
如何在 Excel Online 和 Google 表格中更改日期格式
蛙漫2日版入口 WAMAN2(日版)无删减漫画官网链接
优化 Jest 模拟:强制未实现函数抛出错误以提升测试效率
Composer的 "check-platform-reqs" 命令有什么用_在部署前检查生产环境是否满足Composer依赖需求
win11怎么查看应用耗电情况 Win11电池设置查看应用能耗排行榜【优化】
Win11 USB传输速度慢怎么解决 Win11 USB驱动更新与设置
Python getattr() 异常处理深度解析:避免程序意外退出
如何在J*a中实现统一对象行为接口_项目大型化时的接口规范化
《刺客信条4:黑旗》重制版新细节曝光:无缝加载 地图更细致!
多闪网页版在线观看免费入口_多闪官网访问入口
PHP表单数据传递:如何通过隐藏输入字段获取动态ID
composer 和 npm/yarn 在管理依赖方面有什么核心思想差异?
为什么简单的XML文件也会解析失败? 检查隐藏的非打印字符(如BOM)的方法
深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量
随机参数递归函数的基准调用次数与时间复杂度探究
QQ邮箱网页版入口页面 QQ邮箱在线登录入口官网
Descript怎样用AI剪辑自动去噪_Descript用AI剪辑自动去噪【自动降噪】
Lar*el Form Request中唯一性验证在更新操作中的正确实现
蛙漫安全无毒 官方认证的绿色入口
可靠CSGO开箱平台解析 CSGO开箱网合集
如何在网页中实现特定地点的随机图片展示
sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置
京东单号查询入口_京东快递订单追踪入口
win11 Snap Layouts怎么用 Win11窗口布局与分屏多任务高效指南【必学】
Golang如何使用new_Go new分配内存机制讲解
Python字典中优雅地迭代剩余元素的方法
火锅吃太多会怎样 火锅吃太多会上火吗
哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法
如何更改在 Excel 中打开超链接时的默认浏览器
4399网页游戏电脑版全新入口 4399电脑端在线玩指南
mcjs网页版在线存档 mcjs云存档登录入口
2026年CSGO开箱网站推荐 CSGO开箱平台精选
c++如何使用std::memory_order控制原子操作顺序_c++ C++11内存模型详解
服务端验证_j*ascript输入检查


2025-12-01
浏览次数:次
返回列表