去获取父目录
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
.
的根路径
也就是说,我会强烈建议您使路径可配置,而不是假设二进制文件总是从源代码树中的某个特定位置执行。
我有一些命令行程序需要从父文件夹中读取文件,我的意思是
-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
.
也就是说,我会强烈建议您使路径可配置,而不是假设二进制文件总是从源代码树中的某个特定位置执行。