首页 > 解决方案 > Python3 Subprocess.run 找不到相对引用的文件

问题描述

我正在使用 subprocess.run() ,它使用引用文件的参数作为"./0.mkv"

它告诉我找不到文件“./0.mkv”,我需要引用整个路径还是有办法./正确引用?

或者也许这完全是另外一回事,我不确定。

这是实际的代码:

temp_file_path = "./0.mkv"
final_file_path = "./0hardsubs.mkv"

cmd = ['ffmpeg', '-i', f'"{temp_file_path}"', \
       '-filter_complex', f'"subtitles=\'{temp_file_path}\'"', \
       f'"{final_file_path}"', '-y', '-loglevel', 'warning', '-stats']

subprocess.run(cmd)

这是输出:

"./0.mkv": No such file or directory

标签: python-3.xubuntu

解决方案


原来这是另一回事。我尝试print(os.path.getsize(temp_file_path))并收到了正确的输出,因此 Python 能够清楚地看到该文件。

一旦我删除了 ffmpeg 输入周围的双引号,过滤和输出一切正常。不知道这怎么可能,但我想这是 subprocess.run 的一个功能,它会自动清理参数?

对于任何感兴趣的人,这是最终输出:

temp_file_path = "./0.mkv"
final_file_path = "./0hardsubs.mkv"

cmd = ['ffmpeg', '-i', f'{temp_file_path}', \
       '-filter_complex', f'subtitles=\'{temp_file_path}\'', \
       f'{final_file_path}', '-y', '-loglevel', 'warning', '-stats']

subprocess.run(cmd)

推荐阅读