如何从一个脚本运行多个Python / Shell脚本

时间:2020-06-18 11:17:21

标签: python shell subprocess

我有4个python和shell脚本,我想从一个python脚本一个接一个地运行。

所以我们说:

import script1
import script2
import script3


python script1.py &
#do something here to check if script1 has been completed and move to script 2
python script2.py &
#do something here to check if script2 has been completed and move to script 3
python script3.py &
#do something here to check if script3 has been completed and move to script 4 which is a shell script.

有人可以帮忙吗?预先感谢!

1 个答案:

答案 0 :(得分:1)

我会这样做:

CV_16F

如果您只希望在上一个脚本成功的情况下运行每个脚本,则:

#!/usr/bin/env python

import subprocess

subprocess.run(['python', 'script1.py'])
subprocess.run(['python', 'script2.py'])
subprocess.run(['python', 'script3.py'])

我在这里使用#!/usr/bin/env python import subprocess subprocess.run('python script1.py && python script2.py && python script3.py', shell=True) 是因为我依靠shell来解释shell=True,并且只有在上一个成功的情况下才让下一个进程运行。


如果希望它们在后台并行运行:

&&

我在这里使用#!/usr/bin/env python import subprocess subprocess.run('python script1.py &', shell=True) subprocess.run('python script2.py &', shell=True) subprocess.run('python script3.py &', shell=True) 是因为我依靠shell来解释shell=True,这意味着我希望进程在后台运行,以便我可以在执行其他操作的同时他们跑。


通常,我完全不会使用Python,我会像这样编写&脚本:

bash

此外,通常,我会将Python脚本的第一行像这样进行修改:

#!/bin/bash

python script1.py
python script2.py
python script3.py

然后我可以使用以下命令使脚本可执行:

#!/usr/bin/env python

print('I am a Python script with shebang')

现在,而不是使用以下命令运行它:

chmod +x script.py

内核知道要使用哪个解释器,因此我不必每次都告诉它,我可以使用以下命令简单地运行它:

python script.py

如果该目录位于我的PATH上。或者,如果它不在我的PATH上,则需要:

script.py
相关问题