当前位置: 首页 > 知识库问答 >
问题:

如何获取当前正在运行的文件的目录?

乌璞瑜
2023-03-14

在nodejs中,我使用__dirname。在戈兰,这相当于什么?

我在谷歌上找到了这篇文章http://andrewbrookins.com/tech/golang-get-directory-of-the-current-file/.他使用下面的代码

_, filename, _, _ := runtime.Caller(1)
f, err := os.Open(path.Join(path.Dir(filename), "data.csv"))

但是,这是正确的方式还是习惯的方式做在戈朗?

共有3个答案

慕胡媚
2023-03-14

使用包osext

它提供函数ExecutableFolder(),返回当前运行的程序可执行文件所在文件夹的绝对路径(对cron作业有用)。是跨平台的。

在线文档

package main

import (
    "github.com/kardianos/osext"
    "fmt"
    "log"
)

func main() {
    folderPath, err := osext.ExecutableFolder()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(folderPath)
}
宇文飞翮
2023-03-14

这应该做到:

import (
    "fmt"
    "log"
    "os"
    "path/filepath"
)

func main() {
    dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
    if err != nil {
            log.Fatal(err)
    }
    fmt.Println(dir)
}
唐景山
2023-03-14

编辑:从Go 1.8(2017年2月发布)开始,推荐使用os。可执行文件

func可执行()(字符串,错误)

可执行文件返回启动当前进程的可执行文件的路径名。无法保证路径仍然指向正确的可执行文件。如果使用符号链接启动进程,则根据操作系统的不同,结果可能是符号链接或其指向的路径。如果需要稳定的结果,请选择path/filepath。EvalSymlinks可能会有所帮助。

要仅获取可执行文件的目录,可以使用path/filepath。目录

例子:

package main

import (
    "fmt"
    "os"
    "path/filepath"
)

func main() {
    ex, err := os.Executable()
    if err != nil {
        panic(err)
    }
    exPath := filepath.Dir(ex)
    fmt.Println(exPath)
}

老答案:

您应该能够使用os。代码

func Getwd() (pwd string, err error)

getwd返回对应于当前目录的根路径名称。如果当前目录可以通过多个路径到达(由于符号链接),Getwd可以返回其中的任何一个。

例如:

package main

import (
    "fmt"
    "os"
)

func main() {
    pwd, err := os.Getwd()
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    fmt.Println(pwd)
}

 类似资料:
  • 问题内容: 在nodejs中,我使用__dirname。在Golang中这等效吗? 我在Google上搜索并找到了这篇文章http://andrewbrookins.com/tech/golang-get-directory-of- the-current-file/ 。他在哪里使用以下代码 但这是在Golang中做正确的方法还是惯用的方法吗? 问题答案: 应该这样做:

  • 问题内容: 我正在不同位置运行jar文件,并且试图弄清楚如何获取正在运行的jar文件的位置。 问题答案: 这不是一个完美的解决方案,但这将返回类代码库的位置:

  • 问题内容: 我有调用其他脚本文件的脚本,但是我需要获取该进程中当前正在运行的文件的文件路径。 例如,假设我有三个文件。使用: 来电。 调用。 我怎样才能获得的文件名和路径,从内部代码,而无需从传递这些信息作为参数? (执行将返回原始启动脚本的文件路径,而不是当前文件的路径。) 问题答案: p1.py: p2.py:

  • 问题内容: 我的代码在一个JAR文件(例如)中运行,我需要在代码中知道正在运行的在哪个文件夹中。 因此,如果在中,无论我当前的工作目录是什么,我都希望获取该路径。 问题答案: 用班级名称替换“ MyClass”。 显然,如果从非文件位置加载你的类,这将做奇怪的事情。

  • 问题内容: 我的代码在一个JAR文件(例如foo.jar)中运行,我需要在代码中知道正在运行的foo.jar在哪个文件夹中。 因此,如果foo.jar在中C:\FOO\,无论我当前的工作目录是什么,我都希望获取该路径。 问题答案: 用你的类名称替换“ MyClass”。 显然,如果从非文件位置加载你的类,这将做奇怪的事情。

  • 问题内容: 我想获取当前文件的目录路径。我试过了: 但是,如何检索目录的路径? 例如: 问题答案: Python 3 对于正在运行的脚本的目录: 对于当前工作目录: 对于正在运行的脚本的目录: 如果你的意思是当前工作目录: 请注意,前后分别是两个下划线,而不仅仅是一个。 另请注意,如果你正在交互运行或已从文件以外的内容(例如数据库或在线资源)中加载了代码,则可能不会设置,因为没有“当前文件”的概念