我对python比较陌生,对stackoverflow显然很陌生。我的目标是在我的库中创建一个包含有关视频文件信息的文件:编解码器、大小、比特率和分辨率,我可以轻松解析。我计划使用这些信息来确定哪些视频文件的质量足够低,以保证用更好看的编码进行替换。
我在 sourceforge 上找到了MediaInfo 。我的脚本递归遍历给定目录并通过子进程调用 MediaInfo。由于 stackoverflow 上的这个线程描述了如何解决 Windows 权限错误,我解决了一个较早的错误。我还从这个线程实现了代码来隐藏 Windows 命令提示符控制台,该控制台在每次调用子进程时都会被实例化。
目前,我的代码失败并出现以下错误:
returned non-zero exit status 1
我的脚本的当前状态如下。提前致谢!
import os, subprocess
我推测问题可能在于我如何格式化传递给子进程的字符串
types = [".avi", ".mp4", ".mkv"]
app = "MediaInfo.exe"
app_path = os.path.join("C:\Program Files\MediaInfo\MediaInfo_CLI_0.7.61_Windows_x64", app)
movie_dir = "L:\Movies"
current_file = ""
下面的代码在没有控制台窗口的情况下启动子进程
startupinfo = subprocess.STARTUPINFO()
startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
递归检查媒体目录并分析匹配文件
for root, dirs, files in os.walk(movie_dir):
for filename in files:
for extension in types:
if (filename.endswith(extension)):
current_file = '"' + os.path.join(root, filename) + '"'
output = subprocess.check_output([app, current_file],
executable=app_path,
stderr=subprocess.STDOUT,
startupinfo=startupinfo)
print app_path, current_file, output #debug
with open("out.txt", "a") as f:
f.write(output)