如果我的go程序可以用不同的方式执行(cron,monit等等),那么在运行时获取包含可执行文件的目录的最可靠方法是什么?
在python中,这将是变量:
os.path.realpath(__file__)
答案 0 :(得分:3)
它可能与C中的相同,换句话说,没有便携式的防呆方法。见How do I find the location of the executable in C?
答案 1 :(得分:2)
Andrew Brookins在“Go: How to Get the Directory of the Current File”中提出了一个快速解决方法(不一定是通用的):
我最终发现了
runtime.Caller()
这将返回有关当前goroutine堆栈的一些详细信息,包括文件路径。我的问题的背景是在共享包中打开一个数据文件 我做的是:
_, filename, _, _ := runtime.Caller(1)
f, err := os.Open(path.Join(path.Dir(filename), "data.csv"))
答案 2 :(得分:-2)
我找到的最好方法是使用os.Getwd()
。请参阅此处的文档:golang doc