You need to enable JavaScript to run this app. Python脚本运行正常,控制台却报TypeError字符串格式化日志错误
优惠活动
大模型
产品
解决方案
定价
更多

Python脚本运行正常,控制台却报TypeError字符串格式化日志错误

问题根因

控制台打印的Logging error堆栈,本质是logging模块调用参数不匹配,和脚本主业务流程、日志文件写入配置无关。
触发逻辑完全来自Python内置logging模块的传参规则:

  • logging.info()、logging.error()这类日志方法,第一个传入的参数是日志模板文本,从第二个参数开始的所有内容,都会被当做模板的替换变量,用来匹配模板内的%s、%d类格式化占位符
  • 你脚本第46行的调用写法是logging.info("rowListValue :",rowListValue),传入的模板文本"rowListValue :"内没有任何占位符,但是额外多传了rowListValue作为替换参数,模块执行字符串格式化时,就会因为“传入的参数没有对应占位符可匹配”,抛出TypeError: not all arguments converted during string formatting

之所以主流程能正常执行、日志文件也能写入内容,是因为logging的文件写入Handler捕获了这个格式化异常,将错误堆栈打印到控制台,本该输出的这行日志因为格式化失败没有写入文件,其余正常调用的日志行不受影响,就形成了“业务跑通、日志文件有内容、控制台反复刷错误栈”的现象。

修复方案

针对触发问题的那行日志,两种改法均可彻底解决问题:

  • 改法1:提前拼接完整日志文本,不额外传参数。将原行替换为:
    logging.info(f"rowListValue : {rowListValue}")
    用f-string提前拼好完整字符串,仅传一个字符串作为第一个参数,不存在多余的替换参数,不会触发格式化错误。
  • 改法2:按照logging的参数规范补全占位符。将原行替换为:
    logging.info("rowListValue : %s", rowListValue)
    模板内明确写好%s占位符,传入的变量刚好对应占位符位置,不会出现参数不匹配的问题。

补充:脚本里其余的logging调用,比如logging.info("The files to be renamed are :\n"+finalListFile),都是提前拼好完整字符串再传入的,没有额外传参,不会触发同类错误,无需修改。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 01:15:08