在python中运行终端脚本吗?

问题描述 投票:0回答:1

我正在使用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脚本的输出是什么。

提前谢谢您

python shell terminal subprocess popen
1个回答
0
投票

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

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

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

如果出于某种原因这不是一个选项,那么您可以改为在文件上显式调用bash,因为这类似于如果您使用bash并键入source

subprocess.call(['bash', '../Apps/appName/run'])
© www.soinside.com 2019 - 2024. All rights reserved.