Python从父目录运行子进程

时间:2017-07-10 09:57:23

标签: python subprocess

嘿,我有以下目录结构:

包含a.sh的父目录和包含py的子目录b.py。 现在我想从a.sh致电b.py。我该怎么做?

我的尝试包括:

subprocess.run(['./a.sh'], cwd="..", stdout=subprocess.PIPE)

import os
initPath = os.path.pardir   
subprocess.run([initPath+'./a.sh'], stdout=subprocess.PIPE)

在这两种情况下,我得到:

FileNotFoundError: [Errno 2] No such file or directory: './a.sh'

1 个答案:

答案 0 :(得分:3)

我建议使用从python脚本的路径计算的绝对路径。

import os

source = os.path.dirname(__file__)
parent = os.path.join(source, '../')
script_path = os.path.join(parent, 'a.sh')

script_path将是你的脚本的绝对路径,并将从你的python脚本的路径计算,所以如果你的bash脚本总是在你的python脚本相同的相对路径,它将始终工作,无论目录你正在运行程序。

顺便说一下,我建议始终使用os.path.join计算路径,永远使用+连接字符串但使用format。我让你检查原因。