mongodb - 如何在Go中从多个不同的文件位置执行脚本

标签 mongodb go path scripting

我目前正在使用脚本为每个测试加载和拆卸MongoDB测试数据库。
我这样做如下:

func LoadDB() {
    cmd := exec.Command("../scripts/load_db.py")
}

我在每个测试中都调用此函数。
问题是,从此脚本中删除的一些测试文件比其他测试文件还多:
+ service1
   – service1.go
   – service1_test.go
+ service2
   + sub
      – subservice2.go
      – subservice2_test.go
    – service2.go
    – service2_test.go

问题是工作目录从我调用函数的位置更改为执行脚本,因此相对导入不起作用。我不想使用绝对路径,因为此代码可能在其他计算机上。
能够从多个不同位置调用同一脚本的最佳解决方案是什么?

最佳答案

如何在每台机器上定义设置load_db.py脚本绝对路径的环境变量?

然后,在LoadDB()函数中,您可以使用Getenv()包中的os函数获取环境变量。

https://golang.org/pkg/os/#Getenv

func LoadDB() {
    path := os.Getenv("LOAD_DB_PATH") // /absolute/path/to/script
    cmd := exec.Command(path)
}

关于mongodb - 如何在Go中从多个不同的文件位置执行脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62012860/

相关文章:

Golang 在不破坏数据的情况下截断具有特殊字符的字符串

java - 将流转换为路径/文件名而不写入物理磁盘

java - 如何使用 Java 仅获取与特定过滤器匹配的 MongoDB 文档

node.js - Mongoose 查询返回空

mongodb - 无法在 debian 上初始化副本集(在 createPrivateMap 中打开/创建失败)

node.js - MongoDB : Update only those objects in a collection whose 'Id' exists in a list

go - VSCode : gopls: failed to install [read "https:/proxy.golang.org/@v/v0.1.0.zip": stream error: stream ID 9; NO_ERROR; received from peer]

戈朗 : How can i access json decoded field?

python - 初始的sys.path从哪里来

mySQL 安装程序 - 访问路径被拒绝