无法替换Go中的csv文件的内容

时间:2015-06-25 12:37:50

标签: go

我使用带有标记os.OpenFileos.Create的{​​{1}}创建了一个csv文件(假设为“output.csv”)。我正在对这个文件进行一系列操作。在每次迭代中,我都需要重写csv文件的内容(“output.csv”)。但我的代码附加到csv文件。

2 个答案:

答案 0 :(得分:3)

在每次重写之前,截断文件并寻找开头。 例如:

package main

import (
    "fmt"
    "os"
)

func main() {
    if f, err := os.Create("test.csv"); err == nil {
        defer f.Close()
        for n := 10; n > 0; n-- {
            f.Truncate(0) // comment or uncomment
            f.Seek(0, 0)  // these lines to see the difference
            for i := 0; i < n; i++ {
                f.WriteString(fmt.Sprintf("%d\n", i))
            }
        }
    } else {
        fmt.Println(err)
    }
}

答案 1 :(得分:0)

以读写(os.RDWR)模式打开文件追加到文件。

溶胶: 以只读模式打开文件( os.RDONLY )进行阅读,并在阅读后将其关闭。

csvfile ,_:= os.OpenFile("output.csv", os.O_RDONLY|os.O_CREATE, 0777)
csvfile.Close()

写入时,以只写模式打开文件( os.WRONLY )并在写入后关闭它,这会覆盖文件而不是附加。

csvfile ,_:= os.OpenFile("output.csv", os.O_WRONLY|os.O_CREATE, 0777)
csvfile.Close()

如果要追加,可以使用 os.APPEND