[英]Running binary with “./” from subprocess.run
我在使用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+'\"'])
运行subprocess
进程时,操作系统必须以某种方式找到可执行文件。 通常,可执行文件已安装,可以在PATH
中找到,您只需使用程序名称 - subprocess.run(["program"])
。
在您的情况下,您似乎知道可执行文件的绝对路径,因此您可以使用它 - subprocess.run(["/tools/program"])
。 缺点是您的脚本只能在 /tools 目录中有二进制文件的机器上运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.