You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用FFmpeg处理含点文件名时提示文件不存在问题求助

解决FFmpeg处理带空格路径时提示“No such file or directory”的问题

你遇到的问题根源是路径包含空格(如“27. Air Space”),且代码中对路径的引号处理错误,导致shell解析命令时把空格后的部分当成独立参数,FFmpeg无法识别完整的文件路径。原代码中手动给路径添加两层双引号的方式会干扰shell的参数解析,这是错误的。


方法一:修正os.system的引号使用

直接在FFmpeg命令中用双引号包裹路径参数,确保shell将整个路径视为一个整体:

import os

rootdir = "你的根目录路径"
for folder, dirs, files in os.walk(rootdir):
    for file in files:
        fullpath = os.path.join(folder, file)
        # 用os.path.splitext准确替换文件扩展名
        actual_filename = os.path.splitext(fullpath)[0] + ".wav"
        # 用双引号包裹带空格的路径参数
        os.system('ffmpeg -i "{}" -acodec pcm_s16le -ar 16000 "{}"'.format(fullpath, actual_filename))

方法二:使用subprocess.run(推荐)

os.system依赖shell解析命令,容易出现参数解析问题。推荐使用subprocess.run,直接传递参数列表,无需手动处理引号,更安全可靠:

import os
import subprocess

rootdir = "你的根目录路径"
for folder, dirs, files in os.walk(rootdir):
    for file in files:
        fullpath = os.path.join(folder, file)
        actual_filename = os.path.splitext(fullpath)[0] + ".wav"
        # 直接传递参数列表,每个元素作为独立参数
        subprocess.run([
            'ffmpeg', '-i', fullpath,
            '-acodec', 'pcm_s16le', '-ar', '16000',
            actual_filename
        ])

额外优化说明

原代码中用replace(".mp4", "")替换扩展名存在风险(比如文件名中包含多个.mp4子串),改用os.path.splitext(fullpath)[0]可以准确获取不带扩展名的文件名,再拼接.wav更稳妥。

内容的提问来源于stack exchange,提问作者Mahdi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 13:22:12