-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcsvlib.go
45 lines (40 loc) · 848 Bytes
/
csvlib.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package csvlib
import (
"encoding/csv"
"io"
"os"
)
// ReadFiles reads files []string and outputs 3D slice of all
// the data contained in the csv files. 3D slice should be ready
// to manipulate in any way your heart desires.
func ReadFiles(files []string) ([][][]string, error) {
var list [][][]string
for _, file := range files {
csvFile, err := os.Open(file)
if err != nil {
return nil, err
}
defer csvFile.Close()
csvCnts, err := parseCSV(csvFile)
if err != nil {
return nil, err
}
list = append(list, csvCnts)
}
return list, nil
}
func parseCSV(csvFile io.Reader) ([][]string, error) {
var csvCnts [][]string
f := csv.NewReader(csvFile)
for {
record, err := f.Read()
if err == io.EOF {
break
}
if err != nil {
return nil, err
}
csvCnts = append(csvCnts, record)
}
return csvCnts, nil
}