我有一些命令行程序,我需要从父文件夹中读取文件,我的意思是
-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()
}
这给了根目录,它没有帮助......
答案 0 :(得分:2)
二进制文件的位置无关紧要,工作目录是什么(执行程序时所在的目录)很重要。所有相对路径都将相对于当前工作目录。因此,如果您从myproject
执行,则会使用../
之类的内容作为Walk
的根路径。
那就是说,我强烈建议你使路径可配置,而不是假设二进制文件总是从源树中的某个特定位置执行。