为了账号安全,请及时绑定邮箱和手机立即绑定

在GO错误中写入CSV

在GO错误中写入CSV

Go
慕桂英4014372 2021-05-11 01:05:29
我正在尝试使用GO随附的标准库“ encoding / csv”在GO中写入一个csv文件。但是,没有任何内容写入文件,也没有错误返回。下面是编写代码。映射中的值是字符串数组。感谢您的任何帮助。func writeErrors() {    file, error := os.OpenFile("output.csv", os.O_APPEND|os.O_CREATE, 0666 )    if error != nil {panic(error)}    defer file.Close()    // New Csv writer    writer := csv.NewWriter(file)    // Headers    var new_headers = []string { "group_id", "account_id", "location_id", "payment_rating", "records_with_error" }    returnError := writer.Write(new_headers)    if returnError != nil {        fmt.Println(returnError)    }    for key, value := range errors {        returnError := writer.Write(value)        if returnError != nil {            fmt.Println(returnError)        }        fmt.Println("Writing: ", key, value)    }}
查看完整描述

3 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

还有一个附加标志,因为您直接调用os.OpenFile而不是通过os.Create来为您传递O_RDWR。您需要与O_APPEND一起传递O_RDWR或O_WRONLY | O_CREATE标志。

O_APPEND仅用于表示写入时应将写入追加到文件末尾,它并不指定打开模式本身。

附加说明:您使用“错误”作为变量名称,实际上是Go中的一种类型,通常用于命名错误返回变量的惯用法是“错误”


查看完整回答
反对 回复 2021-05-17
?
慕村225694

TA贡献1880条经验 获得超4个赞

您需要在writer.Flush()之后致电writer.Write()


//from package documentation


func (w *Writer) Flush()

Flush writes any buffered data to the underlying io.Writer.


查看完整回答
反对 回复 2021-05-17
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

os.Create打开一个可写文件,可以从源代码和文档中了解到


查看完整回答
反对 回复 2021-05-17
  • 3 回答
  • 0 关注
  • 202 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信