gitee.com/quant1x/gox@v1.7.6/api/slices_csv.go (about) 1 package api 2 3 import ( 4 "gitee.com/quant1x/gox/util/homedir" 5 "github.com/gocarina/gocsv" 6 "os" 7 ) 8 9 const ( 10 DefaultTagName = "dataframe" 11 ) 12 13 func init() { 14 gocsv.TagName = DefaultTagName 15 } 16 17 // CsvToSlices CSV文件转struct切片 18 func CsvToSlices[S ~[]E, E any](filename string, pointer *S) error { 19 filepath, err := homedir.Expand(filename) 20 if err != nil { 21 return err 22 } 23 csvFile, err := os.Open(filepath) 24 if err != nil { 25 return err 26 } 27 err = gocsv.Unmarshal(csvFile, pointer) 28 return err 29 } 30 31 // SlicesToCsv struct切片转csv文件 32 func SlicesToCsv[S ~[]E, E any](filename string, s S) error { 33 filepath, err := homedir.Expand(filename) 34 if err != nil { 35 return err 36 } 37 // 检查目录, 不存在就创建 38 _ = CheckFilepath(filepath, true) 39 csvFile, err := os.Create(filepath) 40 if err != nil { 41 return err 42 } 43 defer CloseQuietly(csvFile) 44 err = gocsv.MarshalFile(s, csvFile) 45 return err 46 }