假设我有一个像这样的文件夹结构:
src/
- main.go
data/
- example.csv
csv/
- parse.go
utils/
- mapFields.go
mapFields 函数接受输入和输出 csv 文件作为参数:
MapFields(csvInPath string, csvOutPath string) {...}
我希望能够使用相对文件路径从任何 .go 文件调用此 mapFields 函数。例如,来自 main.go:
MapFields("../data/example.csv", "../data/output.csv")
我无法弄清楚如何确保 MapFields 使用从调用函数的文件路径创建的路径与 csv 的相对路径连接来打开 csv。
我已经使用this堆栈溢出帖子实现了一个解决方案,以获取Node.js中的__dirname的等效项,但没有成功。
如果有任何意见,我将不胜感激。
文件路径在当前工作目录的上下文中解析。 这通常是项目的根目录。 您可以使用
os.Getwd()
检查当前目录是什么。
func main() {
if workingDirectory, err := os.Getwd(); err != nil {
panic(fmt.Sprintf("cennot get working direcory - %s", err))
} else {
fmt.Printf("Working direcory is %s", workingDirectory)
}
}
为了获得更大的灵活性,请考虑使用环境变量来指示 csv 文件的根目录。 如果未设置环境变量,请使用
filepath.Join(".", "data")
。