Python,从运行命令获取状态

时间:2015-12-12 02:26:53

标签: python-2.7 popen

我正在运行自己的脚本来启动HandBrakeCLI。 HandBrake需要几个小时才能完成它的工作。

我打算从cron启动这个脚本,所以脚本没有真正的输出(我可以不时更新文件。)

HandBrake可以告诉我在终端运行时它在底线的作用。

我正在使用Popen发动手刹。

如何在运行时看看手刹的输出,以便在真实(近实际)时间内收集它的状态?

这是我正在使用的命令:

command = ['HandBrakeCLI', '-i', long_source, '-o', long_target, '-f', 'mp4'] # + a bunch more
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out, err = p.communicate()
print out
print err

这样可行,但我想在执行期间从Popen输出,而不是等到它完成后。

谢谢,Mark。

PS。 Ubuntu服务器12.04

2 个答案:

答案 0 :(得分:0)

您可以将cron的输出定向到某个文件并引用该文件。

答案 1 :(得分:-1)

您可以使用.communicate()启动子流程,而不是Popen(),然后逐行定期检查stdoutstderr

sp = subprocess.Popen( command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE )

# later....
while continueMyEventLoop:
    out = sp.stdout.readline()
    err = sp.stderr.readline()

    DealWith( out, err )
    DoOtherStuff()