新闻中心

Golang如何操作CSV文件_Golang CSV读取与写入示例

2025-12-01
浏览次数:
返回列表
Go语言通过encoding/csv包实现CSV读写,先使用os.Open打开文件并用csv.NewReader读取数据,可调用ReadAll一次性读取或Read逐行解析;写入时用os.Create创建文件,csv.NewWriter写入数据,需调用Flush确保数据落盘;库自动处理含逗号、引号的字段;大文件应逐行读取以节省内存。

golang如何操作csv文件_golang csv读取与写入示例

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,上海

运行程序将输出:

[姓名 年龄 城市] [Alice 25 北京] [Bob 30 上海]

写入CSV文件

使用csv.NewWriter()可以将数据写入文件或任何实现了io.Writer接口的对象。

示例:写入CSV文件

package main import ( "encoding/csv" "log" "os" ) func writeCSV(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 GoEnhance

全能AI视频制作平台:通过GoEnhance AI让视频创作变得比以往任何时候都更简单。

GoEnhance 347 查看详情 GoEnhance

处理带引号或特殊字符的数据

CSV库会自动处理包含逗号、换行或引号的字段。只要使用WriteWriteAll,内部会正确添加引号并转义。

例如:

{"张三", "28", "深圳,南山区"}

会被写成:

张三,28,"深圳,南山区"

读取时也能正确解析为三个字段。

逐行读取大文件

对于大CSV文件,不建议使用ReadAll()一次性加载全部内容,应使用Read()逐行处理以节省内存。

func readCSVLineByLine(filename string) { file, err := os.Open(filename) if err != nil { log.Fatal(err) } defer file.Close() reader := csv.NewReader(file) for { record, err := reader.Read() if err == io.EOF { break } if err != nil { log.Fatal("读取行失败:", err) } fmt.Println(record) } }

基本上就这些。Golang操作CSV非常直接,结合oscsv包就能完成大多数任务。注意及时关闭文件和调用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输入检查 

搜索