gpt4 book ai didi

go - os.OpenFile 权限问题在测试中

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:29 24 4
gpt4 key购买 nike

我目前遇到了 os.OpenFile 的问题。当我运行我的 go 测试时,它只是给我“权限被拒绝”。

type log struct {
Message string
Source string
Timestamp time.Time
ErrorCode ErrorCode
}

type ErrorCode int

const (
Info ErrorCode = 1 + iota
Warning
Error
)

func (errorCode ErrorCode) String() string {
switch errorCode {
case Info:
return "Info"
case Warning:
return "Warning"
case Error:
return "Error"
}
return "Type not found"
}

func writeToLog(logItem log) {
err := os.Chdir("..")
if err != nil {
fmt.Println("Can't change working directory")
}
err = os.Mkdir("logs", os.FileMode(0777))
if err != nil && os.IsNotExist(err) {
fmt.Println("Can't create log directory")
}
f, err := os.OpenFile("logs/log.txt",
os.O_WRONLY|os.O_CREATE|os.O_APPEND, os.FileMode(0666))
if err != nil {
fmt.Println("Can't find logfile")
fmt.Println(err)
}
defer f.Sync()
defer f.Close()

f.WriteString(logItem.ErrorCode.String() + logItem.Source +
logItem.Message + logItem.Timestamp.String())
}

输出:

Can't find logfile
open logs/log.txt: permission denied
Can't find logfile
open logs/log.txt: permission denied

我做错了什么? OpenFile 似乎没有正确设置我的权限 (-rw-r--r--)。

提前致谢

最佳答案

所以我能够解决这个问题。

os.Chdir("..")

被一遍又一遍地调用。显然,当前工作目录已存储,并且不会更改回 func 完成后的状态。

删除后,一切正常。我刚刚将 ../ 添加到 os.Mkdiros.OpenFile

我希望使用环境变量来使这项工作更好。

关于go - os.OpenFile 权限问题在测试中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32928516/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com