【发布时间】:2013-12-29 08:18:12
【问题描述】:
我正在尝试在 Python 代码中执行 shell 脚本。到目前为止,一切看起来都很好。
下面是我的 Python 脚本,它将执行一个 shell 脚本。现在举个例子,这里是一个简单的 Hello World shell 脚本。
jsonStr = '{"script":"#!/bin/bash\\necho Hello world 1\\n"}'
j = json.loads(jsonStr)
shell_script = j['script']
print "start"
proc = subprocess.Popen(shell_script, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
(stdout, stderr) = proc.communicate()
if stderr:
print "Shell script gave some error"
print stderr
else:
print stdout
print "end" # Shell script ran fine.
现在我正在寻找的是,假设无论出于何种原因,每当我从 Python 代码执行我的 shell 脚本时,无论出于何种原因它都失败了。那么这意味着stderr 不会为空。所以现在我想再次重试执行 shell 脚本,假设在休眠几毫秒后?
意思是如果shell脚本执行失败,是否有可能实现重试机制?我可以重试 5 或 6 次吗?意思是这个号码也可以配置吗?
【问题讨论】:
标签: python bash shell subprocess