Go读取CSV文件,其内容被转换成字符串数组
package main
import (
"encoding/csv"
"fmt"
"io/ioutil"
"log"
"strings"
"io"
)
//读取CSV前两列到map中
func CSVToMap(filePath string) map[string]string{
dat, err := ioutil.ReadFile(filePath)
if err != nil {
log.Fatal(err)
}
r := csv.NewReader(strings.NewReader(string(dat[:])))
record, err := r.ReadAll() //record为二维数组
if err != nil {
panic("读取文件失败")
}
//fmt.Println(record)
if r.FieldsPerRecord < 1 {
panic("CSV不足两列")
}
mapCsv := make(map[string]string)
//以csv文件第一列为KEY,第二列为value,转换为map;重复时后者覆盖前者
for _, val := range record {
mapCsv[val[0]] = val[1]
}
//fmt.Println(mapCsv)
return mapCsv
}
//输出CVS文件的每一行
func readCSV(filePath string){
dat, err := ioutil.ReadFile(filePath)
if err != nil {
log.Fatal(err)
}
r := csv.NewReader(strings.NewReader(string(dat[:])))
for {
record, err := r.Read()
if err == io.EOF {
break
}
if err != nil {
log.Fatal(err)
}
for i:= 0;i<r.FieldsPerRecord;i++ {
fmt.Println(i,record[i])
}
}
}
func main() {
filePath := "/usr/local/automng/src/goapp/src/tools/cmd2.csv"
readCSV(filePath)
mapCsv := CSVToMap(filePath)
df := mapCsv["common"]
fmt.Println(df)
}