Subprocess.run 和未知数量的文件,怎么办?
Subprocess.run and an unknown amount of files, how?
所以我目前正在尝试使用 mkvmerge 来合并音频、视频和未知数量的字幕文件。目前,这些字幕文件路径在列表中。
这是我的问题。我一辈子都想不出一种方法将它放入子进程 运行 中而不引发错误。如果我将字幕名称组合成一个字符串,mkvmerge 会抛出错误,因此每个文件都需要位于“”、“”本身内。
因此,不带字幕的命令如下所示:
subprocess.run(['C:\MKVToolNix\mkvmerge.exe', '-o', f'E:\Videos\{output_filename}.mkv', 'E:\Videos\viddec.mp4', 'E:\Videos\auddec.mp4'])
所以这将产生一个工作视频。
据我所知,包含两个字幕的格式正确的子流程调用需要如下所示。
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 调用中,以便其正常运行?还是有其他我想不到的 method/call?
您可以在 调用 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'])
所以这将产生一个工作视频。
据我所知,包含两个字幕的格式正确的子流程调用需要如下所示。
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 调用中,以便其正常运行?还是有其他我想不到的 method/call?
您可以在 调用 subprocess.run
之前构建参数列表,只要您需要它,并在调用中传递该列表。