首页 > 解决方案 > Subprocess.run 和未知数量的文件,如何?

问题描述

所以我目前正在尝试制作一些使用 mkvmerge 来合并音频、视频和未知数量的字幕文件的东西。目前,这些字幕文件路径在一个列表中。

这是我的问题。我一生都无法想出一种将其放入子进程运行中而不会引发错误的方法。如果我将字幕名称组合成一个字符串,mkvmerge 会抛出一个错误,因此每个文件都需要在 "","" 内。

所以,没有字幕的命令看起来像这样:
subprocess.run(['C:\MKVToolNix\mkvmerge.exe', '-o', f'E:\Videos\{output_filename}.mkv', 'E:\Videos\viddec.mp4', 'E:\Videos\auddec.mp4']) 所以这将产生一个工作视频。

AFAIK,包含两个字幕的格式正确的子进程调用需要看起来像这样。 subprocess.run(['C:\MKVToolNix\mkvmerge.exe', '-o', f'E:\Videos\{output_filename}.mkv', 'E:\Videos\viddec.mp4', 'E:\Videos\auddec.mp4', 'E:\Videos\eng.srt', 'E:\Videos\nor.srt'])

是否可以将这样的变量作为单独的字符串添加到 subprocess.run 调用中,以便它能够正常运行?或者是否有我想不出的不同方法/调用?

标签: pythonpython-3.xsubprocess

解决方案


您可以在调用之前构建参数列表subprocess.run,只要您需要它,然后在调用中传递该列表。


推荐阅读