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) }