【问题标题】:Cannot change directory using os.Chdir() [closed]无法使用 os.Chdir() 更改目录 [关闭]
【发布时间】:2020-01-01 09:35:28
【问题描述】:

golang 中的 os.Chdir() 无法正常工作。

package main

import (
    "fmt"
    "os"
)

func main() {
    command := "cd C:\\"
    if err := os.Chdir(command[3:]); err != nil {
        fmt.Println("Error:\tCould not move into the directory (%s)\n")
    }
}

输出:

Error:   Could not move into the directory

我做错了什么或错过了什么?

【问题讨论】:

  • 可能是权限问题
  • 你能显示原来的错误信息吗?
  • 您应该在Println 参数的末尾添加, err
  • Chdir 将目录名称作为参数,而不是 shell 命令。错误会告诉你没有名为“cd C:\”的目录。
  • @Peter:不是这样的!代码os.Chdir(command[3:]).

标签: windows go cd chdir


【解决方案1】:

您没有最小的、可重复的示例。见:How to create a Minimal, Reproducible Example

这是您的代码的一个最小的、可重现的示例,丢弃除基本代码之外的所有代码并打印输入、输出和错误。

package main

import (
    "fmt"
    "os"
    "runtime"
)

func main() {
    fmt.Println(os.Getwd())
    dir := `C:\`
    if runtime.GOOS != "windows" {
        dir = `/`
    }
    err := os.Chdir(dir)
    fmt.Println(dir, err)
    fmt.Println(os.Getwd())
}

输出:

窗户:

C:\Users\peter>go run chdir.go
C:\Users\peter <nil>
C:\ <nil>
C:\ <nil>
C:\Users\peter>

Linux:

$ go run chdir.go
/home/peter <nil>
/ <nil>
/ <nil>
$ 

有效。

运行它并将其与您的代码进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 2023-01-11
    • 2013-01-19
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多