首页 > 其他分享 >Zgo - csv_data.go

Zgo - csv_data.go

时间:2024-06-10 21:11:38浏览次数:14  
标签:return err nil os go csv data string

 

package main

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

type Record struct {
    Name       string
    Surname    string
    Number     string
    LastAccess string
}

var myData = []Record{}

func readCSVFile(filepath string) ([][]string, error) {
    _, err := os.Stat(filepath)
    if err != nil {
        return nil, err
    }

    f, err := os.Open(filepath)
    if err != nil {
        return nil, err
    }
    defer f.Close()

    // CSV file read all at once
    // lines data type is [][]string
    lines, err := csv.NewReader(f).ReadAll()
    if err != nil {
        return [][]string{}, err
    }
    return lines, nil
}

func saveCSVFile(filepath string) error {
    csvFile, err := os.Create(filepath)
    if err != nil {
        return err
    }
    defer csvFile.Close()

    csvWriter := csv.NewWriter(csvFile)
    // Change the default field delimiter to tab
    csvWriter.Comma = '\t'
    for _, row := range myData {
        record := []string{row.Name, row.Surname, row.Number, row.LastAccess}
        err = csvWriter.Write(record)
        if err != nil {
            return err
        }
    }
    csvWriter.Flush()

    return nil
}

func main() {
    if len(os.Args) != 3 {
        log.Println("csv_data input output!")
        os.Exit(1)
    }

    input := os.Args[1]
    output := os.Args[2]
    lines, err := readCSVFile(input)
    if err != nil {
        log.Println(err)
        os.Exit(1)
    }

    for _, line := range lines {
        record := Record{
            Name:       line[0],
            Surname:    line[1],
            Number:     line[2],
            LastAccess: line[3],
        }
        myData = append(myData, record)
        log.Println(record)
    }

    err = saveCSVFile(output)
    if err != nil {
        log.Println(err)
        os.Exit(1)
    }
}

 

标签:return,err,nil,os,go,csv,data,string
From: https://www.cnblogs.com/zhangzhihui/p/18241039

相关文章

  • vivado HW_ILA_DATA、HW_PROBE
    HW_ILA_DATA描述硬件ILA数据对象是ILA调试核心上捕获的数据的存储库编程到当前硬件设备上。upload_hw_ila_data命令在从ila调试移动捕获的数据的过程中创建hw_ila_data对象核心,hw_ila,在物理FPGA上,hw_device。read_hw_ila_data命令还可以在读取来自磁盘的ILA数据文件。h......
  • golang sync.Once 保证某个动作仅执行一次的机制
     typeOncestruct{doneatomic.Uint32mMutex} 这段代码是Go语言标准库中sync包的一部分,定义了一个Once类型。Once类型用于确保某个函数只被执行一次。它包含一个done原子类型和一个Mutex互斥锁。  done表示动作是否已经执行过,它被放置在结构......
  • The Dragon Boat Festival
    TheDragonBoatFestival,alsoknownastheDuanwuFestival,isasignificantculturaleventinChina.Itfallsonthefifthdayofthefifthlunarmonth,atimewhenfamiliesgathertocelebrateandcommemoratetheancientpoetQuYuan.Thefestivalism......
  • 详解python中的pandas.read_csv()函数
    ......
  • Zgo - randInt, randString
     packagemainimport("fmt""math/rand""strings")const(//AsweonlywanttogetprintableASCIIcharacters,welimittherangeofpseudo-randomnumbers//thatcanbegenerated.Thetotalnumber......
  • 分布式ID:SnowFlake 雪花算法 Go实现
    分布式ID特性:趋势有序性(作为数据库主键时,顺序IO相较随机IO更友好)较UUID更短(占用更小的存储,只占64bit)其它(略)64bit构成:时间偏移(42bit) |数据中心ID(5bit)|节点ID(5bit)|序号(12bit)可按需自定义调整某部分的bit长度,比如把节点ID改为3bit 时间偏移:当前时间-初......
  • 【四种语言一网打尽(C\C++\Python\Golang)】L1-006 连续因子
    L1-006连续因子一个正整数N的因子中可能存在若干连续的数字。例如630可以分解为3×5×6×7,其中5、6、7就是3个连续的数字。给定任一正整数N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中给出一个正整数N(1<N<2^31)。输......
  • Zgo - custom_log.go
     packagemainimport("fmt""io""log""os""path")funcmain(){flag:=os.O_APPEND|os.O_CREATE|os.O_WRONLYlogFile:=path.Join(os.TempDir(),"mGo.log")......
  • Zgo - stats.go
     packagemainimport("fmt""math""os""slices""strconv")funcmain(){args:=os.Argsiflen(args)==1{fmt.Println("Needoneormorearguments!")......
  • python-数据分析-Pandas-5、DataFrame-index
    Index类型,它为Series和DataFrame对象提供了索引服务,有了索引我们就可以排序数据(sort_index方法)、对齐数据(在运算和合并数据时非常重要)并实现对数据的快速检索(索引运算)。由于DataFrame类型表示的是二维数据,所以它的行和列都有索引,分别是index和columns。Index类型的创建的比较简单......