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解决方案更新您的答案吗?正如所解释的,它与您使用不同根的代码完全相同。