从subprocess.run运行带有“/”的二进制文件

2024-04-23 11:47:55 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我在/tools有一个二进制文件,让我们调用二进制文件program。所以我需要打电话给/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+'\"'])


Tags: 文件thepath方法runos选项dir
1条回答
网友
1楼 · 发布于 2024-04-23 11:47:55

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

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

相关问题 更多 >