
文章插图
日常中经常需要使用 golang 读写 csv 文件,比如将数据库中的数据按照要求导出到 csv 中,读取 csv 文件中的数据到内存中进行处理等操作 。
ps: 如果是 Excel 文件(*.xlsm、.xls、.xlt 等格式结尾),需要将其另存为 .csv 格式的文件,才能操作 。package mainimport ( "bufio" "encoding/csv" "fmt" "io" "os")var fileName = "./test.csv"func main() { writeFile() readFile()}func writeFile() { file, err := os.OpenFile(fileName, os.O_CREATE|os.O_RDWR, 0644) if err != nil {fmt.Println("open file is failed, err: ", err) } defer file.Close() // 写入UTF-8 BOM,防止中文乱码 file.WriteString("\xEF\xBB\xBF") w := csv.NewWriter(file) w.Write([]string{"开发者名称", "开发者邮箱", "应用名称"}) w.Write([]string{"Ann", "Ann@126.com", "开心消消乐"}) w.Write([]string{"Jony", "Jony@126.com", "微信"}) // 写文件需要flush,不然缓存满了,后面的就写不进去了,只会写一部分 w.Flush()}func readFile() { // 必须关闭文件后重新打开,才会读出刚才写入的数据 file, err := os.OpenFile(fileName, os.O_CREATE|os.O_RDWR, 0644) if err != nil {fmt.Println("open file is failed, err: ", err) } defer file.Close() r := bufio.NewReader(file) for {b, err := r.ReadBytes('n')// 会把一行中最后的 n 也读取出来,可以使用 TrimSpace 清空 n// b = bytes.TrimSpace(b)// b, err := buf.ReadString('n')if err != nil {if err == io.EOF {break}fmt.Println("err = ", err)return}fmt.Println(string(b)) }}

文章插图
运行结果

文章插图
【golang操作csv文件】
推荐阅读
- python中的文件夹操作
- 手机操作淘宝退保证金的步骤 淘宝保证金怎么退用手机可以操作吗
- BIOS与CMOS的区别
- 跨境电商物流操作流程 货代操作流程
- 生源地助学贷款续贷怎么操作 生源地贷款续贷需要哪些资料
- Mac 下使用 clion 调试 PHP 内核源码
- mysql数据库基本增删改查操作总结
- 黑客攻防手把手教你操作实现
- 收集+持续更新 CentOS7 防火墙相关操作与端口配置
- 礼品茶包装标准,如何面对百分百违规操作
