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

问题描述 投票:-1回答:1

我和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
python windows bash cygwin wait
1个回答
-1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.