猿问

Golang:从 1 个 CSV 文件中获取数据到 anthoer

我是 golang 的新手,我试图将 1 个 csv 文件提取到另一个新的 csv 文件,但我只需要旧 csv 文件中的 2 条记录。


您将如何仅获取该文件的前两条记录?


这是我迄今为止尝试过的(也在play.golang.org 中):


package main


import (

    "encoding/csv"

    "fmt"

    "io"

    "os"

)


func main() {


    //SELECTING THE FILE TO EXTRACT.......


    csvfile1, err := os.Open("data/sample.csv")

    if err != nil {

        fmt.Println(err)

        return

    }


    defer csvfile1.Close()


    reader := csv.NewReader(csvfile1)


    for i := 0; i < 3; i++ {

        record, err := reader.Read()

        if err == io.EOF {

            break

        } else if err != nil {

            fmt.Println(err)

            return

        }

        csvfile2, err := os.Create("data/SingleColomReading.csv")

        if err != nil {

            fmt.Println(err)

            return

        }

        defer csvfile2.Close()


        records := []string{

            record,

        }

        writer := csv.NewWriter(csvfile2)

        //fmt.Println(writer)

        for _, single := range records {


            er := writer.Write(single)

            if er != nil {

                fmt.Println("error", er)

                return

            }


            fmt.Println(single)


            writer.Flush()

            //fmt.Println(records)

            //a:=strconv.Itoa(single)

            n, er2 := csvfile2.WriteString(single)

            if er2 != nil {

                fmt.Println(n, er2)

            }


        }

    }

}


ITMISS
浏览 202回答 2
2回答

www说

这owuld更容易:读CSV文件到一个字符串数组(每个元素一行),两个第一线仅var lines []stringscanner := bufio.NewScanner(file)nblines := 0for scanner.Scan() {&nbsp; &nbsp; lines = append(lines, scanner.Text())&nbsp; &nbsp; if nblines++; nblines >= 2 {&nbsp; &nbsp; &nbsp; &nbsp; break&nbsp; &nbsp; }}然后您可以使用 arange lines在目标文件中写入这两行。lines最多包含 2 个元素。
随时随地看视频慕课网APP

相关分类

Go
我要回答