登录
首页 >  Golang >  Go教程

Golang如何读取CSV文件详解

时间:2026-02-17 19:16:52 239浏览 收藏

本文深入浅出地讲解了Go语言中读取CSV文件的核心方法,重点介绍如何利用标准库`encoding/csv`包高效、安全地处理各类CSV数据——无论是小文件的一次性加载(`ReadAll`),还是大文件的内存友好型逐行解析(`Read`),并自动可靠地支持带逗号、换行符等特殊字符的引号包裹字段,真正实现开箱即用、简洁稳健的CSV解析体验。

如何在Golang中读取CSV文件

在Golang中读取CSV文件非常简单,主要依赖标准库中的 encoding/csv 包。结合 osio 包,你可以轻松打开、读取并解析CSV文件内容。

导入必要的包

读取CSV文件需要以下包:

import (
    "encoding/csv"
    "os"
    "fmt"
)

打开并读取CSV文件

使用 os.Open 打开文件,然后创建一个 csv.Reader 来读取数据。

file, err := os.Open("data.csv")
if err != nil {
    fmt.Println("无法打开文件:", err)
    return
}
defer file.Close()

reader := csv.NewReader(file)
records, err := reader.ReadAll()
if err != nil {
    fmt.Println("读取文件失败:", err)
    return
}

// 遍历每一行
for _, record := range records {
    fmt.Println(record) // 每一行是一个字符串切片
}

逐行读取大文件

如果CSV文件较大,不建议使用 ReadAll() 一次性加载到内存。可以使用 Read() 方法逐行处理。

reader := csv.NewReader(file)
for {
    record, err := reader.Read()
    if err == io.EOF {
        break
    }
    if err != nil {
        fmt.Println("读取行出错:", err)
        return
    }
    fmt.Println(record)
}

这种方式更节省内存,适合处理大型CSV文件。

处理包含逗号或换行符的字段

CSV规范支持用双引号包裹包含特殊字符的字段。encoding/csv 包自动处理这些情况,无需额外操作。只要文件格式正确,读取时会自动解析引号内的内容。

例如,下面这行:

"John Doe","Engineer, Senior","New York"

会被正确解析为三个字段:

[John Doe Engineer, Senior New York]

基本上就这些。Golang的CSV支持开箱即用,结构清晰,适合大多数场景。

以上就是《Golang如何读取CSV文件详解》的详细内容,更多关于golang,CSV读取的资料请关注golang学习网公众号!

资料下载
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>