无法找到文件或目录Python子进程

时间:2014-04-28 20:47:10

标签: python subprocess

我正在尝试调用Python模块但收到以下错误“test.sh not found”

但是该文件位于目录中。

process = subprocess.Popen("test.sh",shell=True)

脚本和sh文件位于同一目录中。

1 个答案:

答案 0 :(得分:3)

默认情况下,当前目录不在PATH中,因此找不到"test.sh",最小的变化是使用"./tests.sh"

要运行shell脚本,请确保您拥有有效的shebang,例如#!/bin/sh,并且该文件具有可执行权限(chmod u+x test.sh)。

如果您从其他目录运行Python脚本,则还需要提供完整路径:

#!/usr/bin/env python
import os
import sys
from subprocess import check_call

script_dir = os.path.realpath(os.path.dirname(sys.argv[0]))
check_call(os.path.join(script_dir, "test.sh"))

注意:没有shell=True在这里启动额外的不必要的shell进程。 realpath解析符号链接,如果您想要路径相对脚本的符号链接而不是脚本文件本身,则可以使用abspath