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

Python调用subprocess.check_output执行ffprobe报TypeError错误如何解决

错误原因

  • 核心报错根源为'-i' % inputfile的写法错误:Python中%为字符串格式化运算符,要求左侧字符串必须包含对应数量的格式化占位符(例如字符串类型对应%s),但此处左侧字符串'-i'无任何占位符,无法完成格式化逻辑,因此抛出TypeError: not all arguments converted during string formatting。
  • 附加的参数规则问题:subprocess.check_output传入参数列表时,命令的每个独立参数都要作为列表的单独元素存在,-i和输入文件路径是ffprobe的两个独立参数,不能合并处理。

修复后的可运行代码

import subprocess

# inputfile为你的视频文件路径变量
lengthofvideo = subprocess.check_output([
    'ffprobe',
    '-i', inputfile,
    '-show_entries', 'format=duration',
    '-v', 'quiet',
    '-of', 'csv=p=0'
])

# 若需将结果转为数值可添加以下处理:check_output默认返回bytes类型,需先解码
duration = float(lengthofvideo.decode('utf-8').strip())

补充说明

  • 原写法中csv="p=0"的多余引号可以删除:使用参数列表传参时不会经过shell解析,无需额外加引号处理转义,直接写csv=p=0即可正常识别。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 20:24:04