在GO错误中写入csv

时间:2012-10-19 14:24:25

标签: csv go

我正在尝试使用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 个答案:

答案 0 :(得分:6)

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

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

附加说明: 你使用“error”作为变量名,这实际上是Go中的一个类型,通常用于命名错误返回变量的成语是“err”

答案 1 :(得分:6)

您需要在writer.Flush()

之后致电writer.Write()
//from package documentation

func (w *Writer) Flush()
Flush writes any buffered data to the underlying io.Writer.

答案 2 :(得分:3)

os.Create打开一个可写文件,可以从sourcedocumentation

中学习