【发布时间】:2021-09-12 15:24:45
【问题描述】:
嘿,我正在尝试使用以下行使用 python 运行 shell 脚本:
import subprocess
shellscript = subprocess.Popen(["displaySoftware.sh"], stdin=subprocess.PIPE)
shellscript.stdin.write("yes\n")
shellscript.stdin.close()
returncode = shellscript.wait()
但是当我运行程序时,它说它找不到 .sh 文件。
【问题讨论】:
-
你能发布完整的回溯吗?
-
尝试给它
.sh文件的完整路径。也许您运行脚本的“当前路径”与脚本所在的路径不同。 -
@Teer2008,如果您的
displaySoftware.sh具有可执行权限并以有效的shebang 开头,您只需将["displaySoftware.sh"]更改为["./displaySoftware.sh"],添加前导./,这就是您所需要的要做——没有shell=True,没有sh。而且它以这种方式更好工作,因为它尊重你的脚本的shebang来选择要使用的解释器。 -
@Teer2008, ...请注意,最好不要硬编码
./来引用模块的__file__属性来查找包含 Python 源代码的目录——这样如果您的脚本从与源目录不同的目录运行,您的脚本仍然可以工作(这是您接受的答案仍然存在的错误)。