Python从父目录运行子进程
嘿,我有以下目录结构: 带有Python从父目录运行子进程,python,subprocess,Python,Subprocess,嘿,我有以下目录结构: 带有a.sh的父目录和带有b.py的子目录py。 现在我想从b.py调用a.sh。我该怎么做 我的努力包括: subprocess.run(['./a.sh'], cwd="..", stdout=subprocess.PIPE) 及 在这两种情况下,我得到: FileNotFoundError: [Errno 2] No such file or directory: './a.sh' 我建议使用根据python脚本的路径计算的绝对路径 import os sou
a.sh
的父目录和带有b.py
的子目录py
。
现在我想从b.py
调用a.sh
。我该怎么做
我的努力包括:
subprocess.run(['./a.sh'], cwd="..", stdout=subprocess.PIPE)
及
在这两种情况下,我得到:
FileNotFoundError: [Errno 2] No such file or directory: './a.sh'
我建议使用根据python脚本的路径计算的绝对路径
import os
source = os.path.dirname(__file__)
parent = os.path.join(source, '../')
script_path = os.path.join(parent, 'a.sh')
script\u path
将是脚本的绝对路径,并且将根据python脚本的路径进行计算,因此,如果bash脚本始终位于python脚本的相同相对路径,则无论从哪个目录运行程序,它都将始终有效
顺便说一句,我建议始终使用
os.path.join
来计算路径,而决不使用+
压缩字符串,但使用格式。我让您检查原因。尝试使用文件的绝对路径。来自root@AkshayApte我忘记了这不是一个选项,因为绝对路径是可变的,这取决于使用哪台计算机。更改所有这些变量都太麻烦了。。。
import os
source = os.path.dirname(__file__)
parent = os.path.join(source, '../')
script_path = os.path.join(parent, 'a.sh')