我有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.
有人可以帮忙吗?预先感谢!
答案 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