在python中运行终端脚本?

时间:2020-02-11 16:23:56

标签: python shell terminal subprocess popen

我正在使用python,并且试图运行位于我正在尝试的另一个文件夹中的shell脚本

subprocess.call(['source','../Apps/appName/run'])

其中“ run”是我编写的shell脚本并制成了可执行文件。但是它不断给出诸如

的错误

没有这样的文件或目录或**没有这样的文件或目录:“源”

我也尝试了以下方法

subprocess.call(['source','../Apps/appName/run']) subprocess.call(['source ../Apps/appName/run']) subprocess.call(['.','../Apps/appName/run'])

我正在尝试运行脚本并将其保留(例如,我不希望有任何返回值,也不希望看到shell脚本的输出是什么。

提前谢谢

1 个答案:

答案 0 :(得分:0)

source是一个内置的shell,可读取文件并解释当前shell实例中的命令。它类似于C #include或Python import。您不应该使用它来运行Shell脚本。

运行脚本的正确方法是在第一行添加#!/bin/bash之类的shebang,然后添加chmod +x yourscriptfile。然后,操作系统将认为它是真实的可执行文件,可以从任何上下文中可靠地执行该可执行文件。在Python中,您可以这样做:

subprocess.call(['../Apps/appName/run'])

如果出于某种原因这不是一个选项,则可以改为在文件上显式调用bash,因为这与在bash中键入source时的情况类似:< / p>

subprocess.call(['bash', '../Apps/appName/run'])