我在使用 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/