有没有什么方法可以使用python将终端输出分配给变量?

Gor*_*not 9 python terminal redirect ffmpeg

我需要通过python获取视频文件的持续时间,作为更大脚本的一部分.我知道我可以使用ffmpeg来获取持续时间,但我需要能够将该输出保存为python中的变量.我认为这会起作用,但它给我的值为0:

cmd = 'ffmpeg -i %s 2>&1 | grep "Duration" | cut -d \' \' -f 4 | sed s/,//' % ("Video.mov")
duration = os.system(cmd)
print duration
Run Code Online (Sandbox Code Playgroud)

我在做输出重定向错了吗?或者根本没有办法将终端输出传回到python中?

unu*_*tbu 20

os.system返回一个返回值,指示命令的成功或失败.它不会返回stdout或stderr的输出.要从stdout(或stderr)获取输出,请使用subprocess.Popen.

import subprocess
proc=subprocess.Popen('echo "to stdout"', shell=True, stdout=subprocess.PIPE, )
output=proc.communicate()[0]
print output
Run Code Online (Sandbox Code Playgroud)

查看本周博客中精彩编写的Python模块.