golang 如何读取csv文件


本文摘自php中文网,作者尚,侵删。

go语言读取CSV的方法:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

package main

  

import (

    "encoding/csv"

    "fmt"

    "io"

    "log"

    "os"

)

  

func main() {

    //准备读取文件

    fileName := "D:\\gotest\\src\\source\\test.csv"

    fs, err := os.Open(fileName)

    if err != nil {

        log.Fatalf("can not open the file, err is %+v", err)

    }

    defer fs.Close()

  

    r := csv.NewReader(fs)

    //针对大文件,一行一行的读取文件

    for {

        row, err := r.Read()

        if err != nil && err != io.EOF {

            log.Fatalf("can not read, err is %+v", err)

        }

        if err == io.EOF {

            break

        }

        fmt.Println(row)

    }

  

    //针对小文件,也可以一次性读取所有的文件

    //注意,r要重新赋值,因为readall是读取剩下的

    fs1, _ := os.Open(fileName)

    r1 := csv.NewReader(fs1)

    content, err := r1.ReadAll()

    if err != nil {

        log.Fatalf("can not readall, err is %+v", err)

    }

    for _, row := range content {

        fmt.Println(row)

    }

  

}

os包是系统标准库里面有操作系统相关的函数和变量,打开一个文件可以使用os.open。

阅读剩余部分

相关阅读 >>

leetcode golang

用go语言进行编程的利与弊

手撸golang go与微服务 saga模式之8 集成测试

手撸golang 基本数据结构与算法 链表

go - 实现项目内链路追踪(二)

golang语言社区投稿】golang高并发基于协程,通道的任务池

聊聊dubbo-go-proxy的accesslogfilter

手撸golang go与微服务 聚合模式

如何用 go 语言写出好用的 http 中间件?

go的值类型和引用类型2——内存分配规则

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...