在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"))
但是,这是正确的方式还是习惯的方式做在戈朗?
使用包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)
}
这应该做到:
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)
}
编辑:从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 对于正在运行的脚本的目录: 对于当前工作目录: 对于正在运行的脚本的目录: 如果你的意思是当前工作目录: 请注意,前后分别是两个下划线,而不仅仅是一个。 另请注意,如果你正在交互运行或已从文件以外的内容(例如数据库或在线资源)中加载了代码,则可能不会设置,因为没有“当前文件”的概念