gpt4 book ai didi

csv - Golang,写入csv文件结果文件有时为空

转载 作者:IT王子 更新时间:2023-10-29 01:58:02 25 4
gpt4 key购买 nike

我正在处理可解析表,并决定以可读格式查看该表。当我用大语法创建 csv 时,它成功输出了结果。但是,解析表不正确。所以,我正在尝试使用更简单的语法进行测试。出于某种原因,这段代码会生成一个包含我的大型语法的 csv 文件,但对于简单语法,该文件是空白的。我在这里做错了什么?

func WriteTableToFile() {
f, err := os.Create("tableFile3.csv")
Check(err)
defer f.Close()
w := csv.NewWriter(f)
var tsl []string
tsl = append(tsl, " ")
tsl, _ = UnionSlices(tsl, TerminalSymbolList)
w.Write(tsl)
fmt.Println(tsl)

for ntk := range ParseTable {
var writeSlice []string
writeSlice = append(writeSlice, ntk)
for _, tk := range TerminalSymbolList {
for _, p := range ParseTable[ntk][tk] {
writeSlice = append(writeSlice, p)
fmt.Println("appending ", p)
}
}
w.Write(writeSlice)
fmt.Println("wrote ", writeSlice)
}
}

最佳答案

您需要调用 Flush CSV 编写器的方法,以确保在关闭文件之前将所有缓冲数据写入文件。您可以使用以下修改:

f, err := os.Create("tableFile3.csv")
Check(err)
w := csv.NewWriter(f)
defer func() {
w.Flush()
f.Close()
}()

这个概念可以扩展到适用于所有使用缓冲区的编写器。

奇怪的是,Flush 方法不返回任何内容,这与 error returned by the Flush method of a *bufio.Writer 不同。但你可以使用 Error方法来检查在前面的 WriteFlush 调用期间可能发生的错误。

关于csv - Golang,写入csv文件结果文件有时为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43700580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com