无法获取stdout数据python

时间:2015-03-23 02:19:24

标签: python subprocess output stdout

我在编码视频时尝试使用HandBrakeCLI程序获取命令的STDOUT输出。我似乎无法让python在标准输出流上处理它的输出。我尝试过以下代码:

import subprocess
import sys

encode = subprocess.check_output("HandBrakeCLI -i video.mkv -o out.mp4", shell=True, stderr=subprocess.STDOUT, universal_newlines=True)
print(encode)

这也没有打印,我也尝试过这个:

import subprocess
import sys

encode = subprocess.Popen("HandBrakeCLI -i video.mkv -o out.mp4", stdout=subprocess.PIPE, stderr = subprocess.PIPE, shell=True, universal_newlines=True)
print(encode.stdout.read())

如前所述,两者都不会导致输出。此应用程序是一种类型,它将在bash中单行更新文本作为其编码。我不确定这种类型的数据流是否会产生python问题。

1 个答案:

答案 0 :(得分:1)

似乎HandBrakeCLI根据是否打印到终端来更改其输出。指定命令行标志以强制执行必要的输出,或者您可以通过直接使用pexpectpty模块提供伪tty(如果您的系统支持它)来欺骗它。

有关如何使用pexpectpty模块从子进程获取输出的代码示例: