在python中运行bash脚本并等待shell命令完成

时间:2018-04-13 14:33:27

标签: python windows bash cygwin wait

我和here使用python 3.x有同样的问题。我尝试了提供的解决方案,但它对我不起作用。

Python不会等待bash脚本完成并打印"结束"在bash脚本被终止之前。

我在窗户上并且已经安装了cygwin。

callBash.py:

import subprocess
print("start")
subprocess.call("sleep.sh",shell=True)
print("end")

sleep.sh:

#!/bin/bash
sleep 10

1 个答案:

答案 0 :(得分:-1)

您永远不会检查subprocess.call的返回值,因此您的脚本可能无法正常启动,可能是因为无效的PATH / CWD或权限或其他原因。

请改用subprocess.check_call,以便在脚本无法运行时引发异常。例外并不容易错过。

此外,如果你有Python 3,subprocess.run(..., check=True)更新,通常更容易使用。