Can';无法从python获取标准数据

Can';无法从python获取标准数据,python,subprocess,output,stdout,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(enc

在编码视频时,我试图使用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出现问题。

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

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


您是否尝试在shell中键入cmd,它是否有返回?无关:第二个代码示例应使用
out,err=encode.communicate()
,以避免死锁的可能性。