【问题标题】:No such file or directory error from os.Openos.Open 没有此类文件或目录错误
【发布时间】:2016-02-26 09:29:29
【问题描述】:

我正在努力找出 os.Open 的问题。在名为模板的文件夹上使用 os.Open 时,我不断收到“没有这样的文件或目录”错误。所以我有我的文件夹 MVCApp,其中包含 bin pkg src 和模板。然后我在 src 文件夹中有 main 。所以我有这个代码:

basePath := "templates"
templateFolder, err := os.Open(basePath)
if err != nil {
    log.Fatal(err)
}
defer templateFolder.Close()

我认为它与我在 open 中使用的 basePath 有关,但我无法弄清楚我需要如何在“模板”前面加上前缀才能找到这个目录。我确信这是一个简单的解决方法,但它让我感到困惑。任何帮助将不胜感激。

【问题讨论】:

  • 我 99% 确定这是一个“工作目录”问题。快速调用以列出当前目录的内容,以确保它位于正确的位置。
  • 你知道如何在 Go 中进行调用吗?我对这门语言还是很陌生。
  • 嗯,试试os.Getwd()。它应该给你当前的工作目录。
  • 好吧,因为我害怕当模板与 src 对等时,我在 src 内的 main 目录中。所以我需要退出两个文件夹才能访问我想要的模板。不知道该怎么做...
  • 如果你这样做basePath := "../../templates"怎么办?

标签: go


【解决方案1】:

根据我们在 cmets 中的讨论,结果表明问题是由于应用程序在不正确的工作目录中运行引起的。

解决方法是修改路径,如下:

basePath := "../../templates"

您也可以使用os.Chdir 永久更改工作目录(在整个过程中),并避免使用../..。更多信息在这里:https://golang.org/pkg/os/#File.Chdir

【讨论】:

  • 仅供参考,您的工作目录与应用程序源无关,取决于您调用应用程序的方式。您应该有适当的方法来配置模板位置,以便以一致的方式进行部署。
猜你喜欢
  • 1970-01-01
  • 2020-11-28
  • 2021-12-20
  • 2019-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
相关资源
最近更新 更多