温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

go语言csv文件的读取与写入

发布时间:2020-08-02 11:28:58 来源:网络 阅读:1583 作者:qq5c9c828bc8d4b 栏目:编程语言

go语言csv文件的读取

暂时未整理

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)
    }

    //创建一个新文件
    newFileName := "D:\\gotest\\src\\source\\newfile.csv"
    //这样打开,每次都会清空文件内容
    //nfs, err := os.Create(newFileName)

    //这样可以追加写
    nfs, err := os.OpenFile(newFileName, os.O_RDWR|os.O_CREATE, 0666)
    if err != nil {
        log.Fatalf("can not create file, err is %+v", err)
    }
    defer nfs.Close()
    nfs.Seek(0, io.SeekEnd)

    w := csv.NewWriter(nfs)
    //设置属性
    w.Comma = ','
    w.UseCRLF = true
    row := []string{"1", "2", "3", "4", "5,6"}
    err = w.Write(row)
    if err != nil {
        log.Fatalf("can not write, err is %+v", err)
    }
    //这里必须刷新,才能将数据写入文件。
    w.Flush()

    //一次写入多行
    var newContent [][]string
    newContent = append(newContent, []string{"1", "2", "3", "4", "5", "6"})
    newContent = append(newContent, []string{"11", "12", "13", "14", "15", "16"})
    newContent = append(newContent, []string{"21", "22", "23", "24", "25", "26"})
    w.WriteAll(newContent)

}
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

csv
AI