我正在运行自己的脚本来启动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
答案 0 :(得分:0)
您可以将cron的输出定向到某个文件并引用该文件。
答案 1 :(得分:-1)
您可以使用.communicate()
启动子流程,而不是Popen()
,然后逐行定期检查stdout
和stderr
:
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()