去获取父目录

时间:2018-01-09 17:10:00

标签: go path directory filepath

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

-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()
   }

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

1 个答案:

答案 0 :(得分:2)

二进制文件的位置无关紧要,工作目录是什么(执行程序时所在的目录)很重要。所有相对路径都将相对于当前工作目录。因此,如果您从myproject执行,则会使用../之类的内容作为Walk的根路径。

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