我正在尝试使用Python中的几个shell级别命令来获取和设置变量以供以后在我的程序中使用但它似乎没有正确调用命令,因为输出应该是简单的1行。不确定是否由于%或;迹象。
current_vcodec = subprocess.check_output(["mediainfo", "--Inform='Video;%CodecID%'", "%s" % source])
current_acodec = subprocess.check_output(["mediainfo", "--Inform='Audio;%CodecID%'", "%s" % source])
duration = subprocess.check_output(["mediainfo", "--Inform='Video;%Duration%'", "%s" % source])
答案 0 :(得分:0)
我强烈建议您使用Kenneth Reitz的https://auth0.com/blog/2015/03/31/critical-vulnerabilities-in-json-web-token-libraries/ python包装器进行子进程。它使命令行的调用更容易使用。
import envoy
res = envoy.run("mediainfo --Inform='Video;%CodecID%' {0}".format(source))
if res.status_code != 0:
print("media info failure: {0}".format(res.std_out + " " + res.std_err))
else:
print(res.std_out)
current_vcodec = res.std_out
如果你需要,你可以逃避"带有反斜杠的%,但我不确定是否存在问题。的;不应该成为一个问题。
答案 1 :(得分:0)
好的,我明白了。这是提供正确输出的语法。
current_vcodec = subprocess.check_output("mediainfo --Inform='Video;%%CodecID%%' %s" % source, shell=True)
current_acodec = subprocess.check_output("mediainfo --Inform='Audio;%%CodecID%%' %s" % source, shell=True)
duration = subprocess.check_output("mediainfo --Inform='Video;%%Duration%%' %s" % source, shell=True)