python - 在 Go 项目文件夹中运行 python 脚本(使用脚本的项目/相对文件路径)

标签 python go exec

我正在尝试在 Go 中执行 python 脚本。但是,无论我在哪里看,都没有解释如何使用项目/相对路径执行脚本。我在 GitHub 上有我的代码,不想要脚本的完整路径(“home/user/Documents/projectFolder/script.py”)

相反,我需要一个项目/相对路径(“/script.py”或等效路径)

最终,我如何执行 script.py,而不必去特定目录中查找它?

注意:我的项目在“home/user/Documents/project”

编辑:更改了“最终”部分

最佳答案

由于 Go 是一种编译语言,(通常)会产生单个可执行文件,因此项目结构在编译时几乎丢失了。因此项目相对路径在运行时是没有意义的。您将需要另一种方法来找到您的脚本(以及将其提供给执行程序的脚本)。

这样做的一种方法是要求您的可执行文件和脚本位于您知道的相对位置(例如 scripts 文件夹和 bin 文件夹它们在同一目录中)。然后你可以os.Args[0]获取可执行文件的路径,然后您可以使用它来构造脚本的路径。要构建路径,您可以查看 filepath包。

编辑:阅读您更新后的问题后,我找到了 packr项目,它似乎提供了一种在二进制文件中包含静态文件的方法。我从未使用过该项目,也不知道如何准确使用它,但看起来您应该能够将脚本文件存储在二进制文件中,然后以某种方式将脚本传递给 python。例如,您可以将其写入临时文件或使用 -c 参数将其传递给 python。此方法将要求您使用 packr 命令行工具构建您的项目。此外,如果您包含大文件,您的二进制文件的大小也会增加。

关于python - 在 Go 项目文件夹中运行 python 脚本(使用脚本的项目/相对文件路径),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52654996/

相关文章:

json - 在 Go 中为 JSON 指定分隔符

json - 没有 Json 返回

PHP 使用 exec 运行 curl

java - 如何知道用户何时关闭 Java 中使用 exec() 执行的程序

python Pandas : How to merge based on an "OR" condition?

python - 正则表达式搜索查找查询之前和之后

golang 将新值设置为类型为 map[string]interface{} 的对象

sql-server - SQL Server exec 关键字

python - 在 keras-rl 中定义 Action 值

python - sqlalchemy 的 create_all 不会自动创建序列