Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go 转到父目录_Go_Path_Directory_Filepath - Fatal编程技术网

Go 转到父目录

Go 转到父目录,go,path,directory,filepath,Go,Path,Directory,Filepath,我有一些命令行程序,我需要从父文件夹中读取文件 -parentDir -- myproject --- cmd ----main.go --otherdir -file.json 正如您所看到的,otherdir就像myproject的兄弟,我需要从main.go读取文件.json 我试过的是跟随 func visit(path string, f os.FileInfo, err error) error { fmt.Printf("Visited: %s\n", pa

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

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

 --otherdir
  -file.json 
正如您所看到的,otherdir就像myproject的兄弟,我需要从main.go读取文件.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,但这没有帮助。。。 知道如何从命令行程序中读取一些从可执行文件中升级的文件吗

我也试过了

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


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

这给了根目录,它也没有帮助…

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


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

谢谢,但是..otherdir在您的解决方案中是常量,它实际上可以是任何名称,我无法预测它。我知道,我应该在otherdirN中找到文件.json,它与MyProj处于同一级别。这很好,只需使用Walk,根位于例如…/。然而如果在多个同级目录中有json文件呢?同样,这似乎应该通过一个config参数来解决,以指定要使用的确切路径,而不是尝试基于当前工作目录遍历目录结构。按照您所描述的那样做将在将来导致更多的问题。您能用正确的walk解决方案更新您的答案吗?正如所解释的,它与您使用不同根的代码完全相同。