mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-04 12:52:28 +08:00
doc: add doc for WriteMapsToCsv
This commit is contained in:
@@ -628,15 +628,19 @@ func Sha(filepath string, shaType ...int) (string, error) {
|
||||
|
||||
// ReadCsvFile read file content into slice.
|
||||
// Play: https://go.dev/play/p/OExTkhGEd3_u
|
||||
func ReadCsvFile(filepath string) ([][]string, error) {
|
||||
func ReadCsvFile(filepath string, delimiter ...rune) ([][]string, error) {
|
||||
f, err := os.Open(filepath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
csvReader := csv.NewReader(f)
|
||||
records, err := csvReader.ReadAll()
|
||||
reader := csv.NewReader(f)
|
||||
if len(delimiter) > 0 {
|
||||
reader.Comma = delimiter[0]
|
||||
}
|
||||
|
||||
records, err := reader.ReadAll()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -748,8 +752,9 @@ func escapeCSVField(field string, delimiter rune) string {
|
||||
return escapedField
|
||||
}
|
||||
|
||||
// map切片写入csv文件中
|
||||
func WriteMapsToCSV(filepath string, records []map[string]string, append_to_existing_file bool, delimiter ...rune) error {
|
||||
// WriteMapsToCsv write slice of map to csv file.
|
||||
// Play: todo
|
||||
func WriteMapsToCsv(filepath string, records []map[string]string, append_to_existing_file bool, delimiter ...rune) error {
|
||||
var datas_to_write [][]string
|
||||
// 标题(列名)
|
||||
var headers []string
|
||||
|
||||
@@ -3,6 +3,7 @@ package fileutil
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
@@ -331,6 +332,27 @@ func ExampleWriteCsvFile() {
|
||||
// [[Lili 22 female] [Jim 21 male]]
|
||||
}
|
||||
|
||||
func ExampleWriteMapsToCsv() {
|
||||
csvFilePath := "./testdata/test3.csv"
|
||||
records := []map[string]string{
|
||||
{"Name": "Lili", "Age": "22", "gender": "female"},
|
||||
{"Name": "Jim", "Age": "21", "gender": "male"},
|
||||
}
|
||||
|
||||
err := WriteMapsToCsv(csvFilePath, records, false, ';')
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
content, err := ReadCsvFile(csvFilePath, ';')
|
||||
|
||||
fmt.Println(content)
|
||||
|
||||
// Output:
|
||||
// [[Name Age gender] [Lili 22 female] [Jim 21 male]]
|
||||
}
|
||||
|
||||
func ExampleWriteStringToFile() {
|
||||
filepath := "./test.txt"
|
||||
|
||||
|
||||
@@ -379,11 +379,33 @@ func TestWriteCsvFile(t *testing.T) {
|
||||
|
||||
assert.Equal(2, len(readContent))
|
||||
assert.Equal(3, len(readContent[0]))
|
||||
assert.Equal("Lili", content[0][0])
|
||||
assert.Equal("Lili", readContent[0][0])
|
||||
|
||||
// RemoveFile(csvFilePath)
|
||||
}
|
||||
|
||||
func TestWriteMapsToCsv(t *testing.T) {
|
||||
assert := internal.NewAssert(t, "TestWriteMapsToCSV")
|
||||
|
||||
csvFilePath := "./testdata/test3.csv"
|
||||
records := []map[string]string{
|
||||
{"Name": "Lili", "Age": "22", "gender": "female"},
|
||||
{"Name": "Jim", "Age": "21", "gender": "male"},
|
||||
}
|
||||
|
||||
err := WriteMapsToCsv(csvFilePath, records, false, ';')
|
||||
|
||||
assert.IsNil(err)
|
||||
|
||||
content, err := ReadCsvFile(csvFilePath, ';')
|
||||
|
||||
assert.IsNil(err)
|
||||
|
||||
assert.Equal(3, len(content))
|
||||
assert.Equal(3, len(content[0]))
|
||||
assert.Equal("Lili", content[1][0])
|
||||
}
|
||||
|
||||
func TestWriteStringToFile(t *testing.T) {
|
||||
assert := internal.NewAssert(t, "TestWriteStringToFile")
|
||||
|
||||
|
||||
1
fileutil/testdata/test1.csv
vendored
1
fileutil/testdata/test1.csv
vendored
@@ -1,3 +1,4 @@
|
||||
Lili,22,female
|
||||
Jim,21,male
|
||||
|
||||
|
||||
|
||||
|
1
fileutil/testdata/test2.csv
vendored
1
fileutil/testdata/test2.csv
vendored
@@ -1,3 +1,4 @@
|
||||
Lili,22,female
|
||||
Jim,21,male
|
||||
|
||||
|
||||
|
||||
|
3
fileutil/testdata/test3.csv
vendored
Normal file
3
fileutil/testdata/test3.csv
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
Name;Age;gender
|
||||
Lili;22;female
|
||||
Jim;21;male
|
||||
|
0
fileutil/testdata/text.txt
vendored
Normal file
0
fileutil/testdata/text.txt
vendored
Normal file
Reference in New Issue
Block a user