我是 golang 的新手,我试图将 1 个 csv 文件提取到另一个新的 csv 文件,但我只需要旧 csv 文件中的 2 条记录。您将如何仅获取该文件的前两条记录?这是我迄今为止尝试过的(也在play.golang.org 中):package mainimport ( "encoding/csv" "fmt" "io" "os")func main() { //SELECTING THE FILE TO EXTRACT....... csvfile1, err := os.Open("data/sample.csv") if err != nil { fmt.Println(err) return } defer csvfile1.Close() reader := csv.NewReader(csvfile1) for i := 0; i < 3; i++ { record, err := reader.Read() if err == io.EOF { break } else if err != nil { fmt.Println(err) return } csvfile2, err := os.Create("data/SingleColomReading.csv") if err != nil { fmt.Println(err) return } defer csvfile2.Close() records := []string{ record, } writer := csv.NewWriter(csvfile2) //fmt.Println(writer) for _, single := range records { er := writer.Write(single) if er != nil { fmt.Println("error", er) return } fmt.Println(single) writer.Flush() //fmt.Println(records) //a:=strconv.Itoa(single) n, er2 := csvfile2.WriteString(single) if er2 != nil { fmt.Println(n, er2) } } }}
2 回答
www说
TA贡献1775条经验 获得超8个赞
这owuld更容易:
读CSV文件到一个字符串数组(每个元素一行),两个第一线仅
var lines []string
scanner := bufio.NewScanner(file)
nblines := 0
for scanner.Scan() {
lines = append(lines, scanner.Text())
if nblines++; nblines >= 2 {
break
}
}
然后您可以使用 arange lines在目标文件中写入这两行。
lines最多包含 2 个元素。
- 2 回答
- 0 关注
- 192 浏览
添加回答
举报
0/150
提交
取消