我和here和python 3.x有同样的问题。我尝试了提供的解决方案,但它对我不起作用。
Python不等待bash脚本完成并在终止bash脚本之前打印“end”。
我在Windows上安装了cygwin。
call bash.朋友:
import subprocess
print("start")
subprocess.call("sleep.sh",shell=True)
print("end")
sleep.是:
#!/bin/bash
sleep 10
您永远不会检查subprocess.call
的返回值,因此您的脚本可能甚至无法正常启动,可能是因为PATH / CWD或权限无效或其他原因。
请改用subprocess.check_call
,以便在脚本无法运行时引发异常。例外并不容易错过。
此外,如果你有Python 3,subprocess.run(..., check=True)
更新,通常更容易使用。