去获取父目录

Go get parent directory

我有一些命令行程序需要从父文件夹中读取文件,我的意思是

-parentDir
 -- myproject
 --- cmd
 ----main.go 

 --otherdir
  -file.json 

如您所见,otherdir 就像 myproject 的兄弟姐妹,我需要从我的 main.go 阅读 file.json

我试过如下

func visit(path string, f os.FileInfo, err error) error {
  fmt.Printf("Visited: %s\n", path)
  return nil
} 


func main() {
  flag.Parse()
  root := flag.Arg(0)
  err := filepath.Walk(root, visit)
  fmt.Printf("filepath.Walk() returned %v\n", err)
}

我也尝试提供 args(-1),但没有帮助... 知道如何从 command line 程序中读取一些从我的可执行文件升级的文件吗?

我也试过

import "github.com/mitchellh/go-homedir"


func Path(path string) (error, string) {
    home, err := homedir.Dir()
   }

这给出了根目录,这也无济于事...

二进制文件在哪里并不重要,重要的是工作目录是什么(执行程序时所在的目录)。所有相对路径都将相对于当前工作目录。因此,如果您从 myproject 执行,您将使用类似 ../ 的内容作为 Walk.

的根路径

也就是说,我会强烈建议您使路径可配置,而不是假设二进制文件总是从源代码树中的某个特定位置执行。