python - 从 subprocess.run 运行带有 "./"的二进制文件

标签 python python-3.x

我在使用 subprocess.run 运行某些二进制文件时遇到一些问题

我在/tools中有一个二进制文件,让我们调用该二进制程序。所以我需要调用 /tools/program

我尝试的每个选项,子进程都显示该文件不存在。我已经尝试过以下方法。

ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
TOOL_DIR = ROOT_DIR + '/tools/program'

# All of the following return error not found
program_subprocess = subprocess.run(['./'+TOOL_DIR])
program_subprocess = subprocess.run(['./"'+TOOL_DIR+'"'])
# Tried without the /, cause TOOL_DIR has a slash at the start
program_subprocess = subprocess.run(['.'+TOOL_DIR])

知道如何使用./通过subprocess.run运行二进制文件吗?

编辑:也尝试过

subprocess.run([./\"+TOOL_DIR+'\"'])

最佳答案

当运行subprocess时,操作系统必须以某种方式找到可执行文件。通常,可执行文件已安装,可以在 PATH 中找到,您只需使用程序名称 - subprocess.run(["program"])

在您的情况下,您似乎知道可执行文件的绝对路径,因此您可以使用它 - subprocess.run(["/tools/program"])。缺点是您的脚本只能在/tools 目录中包含二进制文件的计算机上运行。

关于python - 从 subprocess.run 运行带有 "./"的二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61733303/

相关文章:

python - 用于通用模型的 Django Createview

python - 我可以跨 Flask 请求保持一个 http 连接(或其他数据)吗?

json - 使用 python 将数据附加到 JSON 文件?

python - Travis CI 在 macOS 上找不到 python3

python - 如何使列表理解迭代函数

python - 尝试保存并写入文件

python - 尝试 .loc 后的 pandas SettingWithCopyWarning

python - C++ 程序字符串搜索的速度可以和 python 一样快吗?

python - 关于 tf.nn.leaky_relu 中 alpha 的详细信息(features, alpha=0.2, name=None)

python - 如何检查列表 'a' 中的元素是否满足列表 'b' 中的条件?