【发布时间】:2015-05-25 23:28:20
【问题描述】:
在对视频进行编码时,我正在尝试使用 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 带来问题。
【问题讨论】:
-
你有没有试过在shell中输入你的cmd,它有返回吗?
-
无关:第二个代码示例应该使用
out, err = encode.communicate()以避免死锁的可能性。
标签: python subprocess output stdout