Python,从运行命令获取状态
问题描述:
我正在运行我自己的脚本来启动HandBrakeCLI。 HandBrake需要几个小时来完成它的工作。Python,从运行命令获取状态
我打算从cron启动此脚本,所以会出现从脚本没有真正的输出(我可以随时更新文件时间。)
手刹能告诉我它是什么在底部做终端在运行时的线路。
我正在使用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
输出执行过程中,不能等到它完成之后。
谢谢,马克。
PS。 Ubuntu服务器12.04
答
您可以将cron的输出指向某个文件并引用该文件。
答
相反的.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()
你尝试过什么?在我看来,'subprocess.Popen'完全是正确的方法,所以没有看到错误信息,我不知道为什么你不能这样做。 – jez
这里是我正在使用的命令:'p = subprocess.Popen(['HandBrakeCLI','-i',long_source,'-o',long_target,'-f','mp4'..一堆更多],标准输出= subprocess.PIPE,标准错误= subprocess.PIPE)' \t \t'出来,ERR = p.communicate()' \t \t'打印out' \t \t'打印err' –
这工作,但我想从输出Popen ** **执行期间,不要等到完成后。格式在这个评论部分不起作用。 –