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

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

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

Go
郎朗坤 2021-10-18 14:23:01
我创建了一个 csv 文件(假设为“output.csv”),使用os.OpenFile标志os.Create和os.RDWR. 我正在对这个文件进行一系列操作。在每次迭代中,我都需要重写 csv 文件(“output.csv”)的内容。但我的代码附加到 csv 文件。
查看完整描述

2 回答

?
守着星空守着你

TA贡献1799条经验 获得超8个赞

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


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)

    }

}


查看完整回答
反对 回复 2021-10-18
?
慕斯709654

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

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


Sol:以只读模式(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


查看完整回答
反对 回复 2021-10-18
  • 2 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

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