为什么subprocess.popen返回一个空字符串

时间:2013-05-20 05:21:14

标签: python subprocess popen

我正在使用python的subprocess.popen来获取视频文件的信息。

output = Popen('ffmpeg -i "'+avifile+'" -dframes 0 -vframes 0', 
    executable="/bin/bash", stdout=PIPE, stderr=STDOUT,
    shell=True).communicate()[0]

当我运行它时,输出变量是一个空字符串,当我知道应该有什么东西时。我可以手动运行ffmpeg。

我想也许这是管道问题和重定向。想知道是否有人可以解决这个问题。

3 个答案:

答案 0 :(得分:0)

cmd = ['ffmpeg','-i',avifile,'-dframes','0','-vframes', '0']

output = Popen(cmd, 
    #executable="/bin/bash", ive never seen this used ... you may not need it
    stdout=PIPE, stderr=PIPE,
    shell=True).communicate()

尝试相反,也许......

答案 1 :(得分:0)

将组合的stdout / stderr作为字符串读取并在非零返回状态下获取异常:

from subprocess import STDOUT, check_output as qx

output = qx(['ffmpeg', '-i', avifile] + '-dframes 0 -vframes 0'.split(),
            stderr=STDOUT)

除非您需要,否则请勿使用shell=True

答案 2 :(得分:0)

我将变量输出更改为video_output,但由于某种原因,它工作正常。我完全没有原因。