嘿,我有以下目录结构:
包含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'
答案 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
。我让你检查原因。