csv文件操作(go語言)


go語言自帶的有csv文件讀取模塊,看起來好像不錯,今天玩玩,也算是系統學習go語言的一部分……^_^

 

一、寫csv文件

函數:

func NewWriter(w io.Writer) *Writer

func (w *Writer) Flush()

func (w *Writer) Write(record []string) (err os.Error)

func (w *Writer) WriteAll(records [][]string) (err os.Error)

具體見官網:http://golang.org/pkg/csv/#NewWriter

 

其實寫csv文件大可不必用這些函數,直接按照規則寫入文件就行,不過這里有這些函數,還是寫個demo,也方便我以后使用:

package main

import (
 "csv"
 "os"
 "bytes"
 "fmt"
)

func main(){
 fileName := "2.csv"
 buf := new(bytes.Buffer)
 r2 := csv.NewWriter(buf)
 for i:=0;i<10;i++ {
 s := make([]string,3)
 s[0] = "user id"
 s[1] = "name"
 s[2] = "depart"
 r2.Write(s)
 r2.Flush()
 }
 fmt.Println(buf)
 fout,err := os.Create(fileName)
 defer fout.Close()
 if err != nil {
 fmt.Println(fileName,err)
 return
 }
 fout.WriteString(buf.String())
}

二、讀csv文件

函數:

func NewReader(r io.Reader) *Reader

func (r *Reader) Read() (record []string, err os.Error)

func (r *Reader) ReadAll() (records [][]string, err os.Error)

具體見官網:http://golang.org/pkg/csv/#Reader.Read

 

1、首先要解決的是讀取文件的所有內容並存成字符串,這里用的是ioutil模塊,具體代碼如下:

package main

import (
        "io/ioutil"
        "fmt"
)

func main(){
        b,err := ioutil.ReadFile("1.csv")
        if err != nil {
                panic(err.String())
        }
        //fmt.Println(b)
        fmt.Printf("%s",string(b))
}

2、讀取csv文件內容:

package main

import (
 "fmt"
 "csv"
 "strings"
 "io/ioutil"
)

func main(){
 //fileName := "1.csv"
 fmt.Printf("Input file name : ")
 var fileName string
 fmt.Scanf("%s",&fileName)
 cntb,err := ioutil.ReadFile(fileName)
 if err != nil {
 panic(err.String())
 }
 r2 := csv.NewReader(strings.NewReader(string(cntb)))
 ss,_ := r2.ReadAll()
 //fmt.Println(ss)
 sz := len(ss)
 for i:=0;i<sz;i++{
 fmt.Println(ss[i])
 }
}
好,就這些了,希望對你有幫助


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM