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 mainimport ( "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 mainimport ( "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 mainimport ( "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]) }}
好,就這些了,希望對你有協助