在Python中的一个进程下运行shell脚本

在Python中的一个进程下运行shell脚本,python,subprocess,popen,Python,Subprocess,Popen,我对shell脚本非常陌生。 我必须使用Python执行shell脚本。 shell脚本的顺序很重要。 下面是我的Python代码示例 import subprocess import os script1= "scripts/script1.sh" script2 = "scripts/script2.sh" script3 = "scripts/script3.sh" subprocess.call([script1]) subprocess.call([script2]) subpr

我对shell脚本非常陌生。 我必须使用Python执行shell脚本。 shell脚本的顺序很重要。 下面是我的Python代码示例

import subprocess
import os

script1=  "scripts/script1.sh"
script2 = "scripts/script2.sh"
script3 = "scripts/script3.sh"

subprocess.call([script1])
subprocess.call([script2])
subprocess.call([script3])
问题在于上面的代码所有脚本都是一个接一个单独执行的,但我想在一个进程下运行所有脚本


例如,script2和script3应该在ScriptOne运行时执行。

似乎您需要并行进程。看看多处理模块。下面是一些好例子:[

似乎您需要并行处理。请看多处理模块。下面是一些好例子:[

虽然OP显然拒绝澄清他的问题,但他留下了一条评论,指出他正在寻找
subprocess.Popen()


你最终应该等待你启动的进程。

虽然OP显然拒绝澄清他的问题,但他留下了一条评论,指出他正在寻找
subprocess.Popen()


你最终应该
等待你启动的进程。

在一个进程下“如何意味着”在另一个脚本运行时执行?这些似乎完全矛盾。如果你想同时运行它们,你怎么能保持秩序?@Daniel Roseman是的,我的意思是“在一个进程下”“script2和script3在script1运行时运行“。实际上,在我的实现中,script1打开调试程序的GUI,该程序正在等待script2执行的一些命令。然后,您应该澄清您的问题。shell脚本始终是一个单独的进程。通过在后台运行一些进程,您可以运行多个并发进程。”(这是一个交互式shell概念——它基本上意味着fork和don't wait),或者使用管道
等待一个进程完成,但底层的
Popen
将启动任意多个进程而不等待,除非您明确要求它启动。@tripleee是的,在我使用
subprocess.Popen([script1])
启动script1后,它就开始工作了。它以后台进程的形式运行script1。谢谢“在一个进程下”听起来你想启动一个shell进程,并且
源代码
所有给定脚本。如果你的意思是并发运行(“脚本一正在运行”),那么如果它不是你想要的,那么它是“留下注释”的副本。“在一个进程下”如何表示“在另一个脚本运行时执行”?这些看起来完全矛盾。如果你想同时运行它们,你怎么能保持秩序?@Daniel Roseman是的,“在一个进程下”我的意思是“script2和script3在script1运行时运行”。实际上,在我的实现中,script1打开调试程序的GUI,该程序正在等待script2执行的一些命令。然后,您应该澄清您的问题。shell脚本始终是一个单独的进程。通过在后台运行一些进程,您可以运行多个并发进程(这是一个交互式shell概念——它基本上意味着fork和don't wait),或者使用管道
等待一个进程完成,但底层的
Popen
将启动任意多个进程而不等待,除非您明确要求它启动。@tripleee是的,在我使用
subprocess.Popen([script1])
启动script1后,它就开始工作了。它以后台进程的形式运行script1。谢谢“在一个进程下”听起来你想启动一个shell进程并
source
所有给定脚本。如果你的意思是并发运行(“脚本一正在运行”),那么如果它不是你想要的,那么它就是“留下注释”的副本。
procs = []
for cmd in ['scripts/script1.sh', 'scripts/script2.sh', 'scripts/script3.sh']:
    procs.append(subprocess.Popen([cmd]))