我正在尝试使用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)
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
还有一个额外的标志,因为你直接调用os.OpenFile而不是通过os.Create来为你传递O_RDWR.您需要将O_RDWR或O_WRONLY与O_APPEND |一起传递 O_CREATE标志.
O_APPEND仅用于表示写入时应将写入附加到文件的末尾,它不指定打开模式本身.
附加注意:你使用"error"作为变量名,这实际上是Go中的一个类型,通常用于命名错误返回变量的成语是"err"
小智 6
你需要调用writer.Flush()后writer.Write()
//from package documentation
func (w *Writer) Flush()
Flush writes any buffered data to the underlying io.Writer.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3194 次 |
| 最近记录: |