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

使用docxtpl插入InlineImage报图片不存在错误如何解决

问题背景

需要批量将图片插入Word文档,统一图片尺寸实现便捷打印,使用如下代码实现时抛出Image does not exist报错,提示对应jpg图片不存在,已自行确认文件名、存储路径填写正确仍无法解决:

from docxtpl import DocxTemplate
from docxtpl import InlineImage
from docx.shared import Mm
import os

folder = "./mercedes/" 

for img_name in os.listdir(folder):
    doc = DocxTemplate("C:\\Users\\jpp08\\Documents\\MIDDELKOOP\\testimg.docx")
    img1 = InlineImage(doc, image_descriptor=f'{img_name}', width=Mm(20), height=Mm(10))
    context = {'img1': img1}
    doc.render(context)
    doc.save(f"{folder}/{img_name}" +".docx")
核心报错原因

os.listdir(folder)仅返回目标目录下的文件/子文件夹名称,不包含父目录路径。代码中直接将img_name传入InlineImage,程序会在当前脚本运行的工作目录下查找对应图片,而非./mercedes/目录,自然会触发文件不存在报错。

排查解决步骤
  • 优先修正路径拼接逻辑:遍历得到文件名后,通过os.path.join()将文件夹路径和文件名拼接为完整路径,再传入图片读取接口。
  • 过滤无效遍历项:目录下可能存在子文件夹、系统隐藏文件、非图片格式文件,遍历过程中需要跳过这些项,避免将非图片文件传入图片加载接口。
  • 确认文件真实后缀:Windows系统默认隐藏已知文件类型的扩展名,可能出现视觉上文件名是test.jpg、实际完整文件名是test.jpg.jpg的情况,可在文件资源管理器勾选「文件扩展名」选项查看真实文件名。
  • 规避相对路径歧义:如果使用IDE运行代码,注意IDE默认工作目录可能和脚本所在目录不一致,不确定时直接拼接为绝对路径传入即可。
  • 优化保存逻辑:原代码保存生成的Word文档时,会把图片原后缀也带入文件名,最终生成类似test.jpg.docx的文件,可提前拆分文件名后缀,生成更规范的文档名。
修正后代码
from docxtpl import DocxTemplate, InlineImage
from docx.shared import Mm
import os

folder = "./mercedes/"
template_path = "C:\\Users\\jpp08\\Documents\\MIDDELKOOP\\testimg.docx"

for img_name in os.listdir(folder):
    img_full_path = os.path.join(folder, img_name)
    # 跳过子文件夹、非图片格式文件
    if not os.path.isfile(img_full_path) or not img_name.lower().endswith(('.jpg', '.jpeg', '.png')):
        continue
    doc = DocxTemplate(template_path)
    img1 = InlineImage(doc, image_descriptor=img_full_path, width=Mm(20), height=Mm(10))
    context = {'img1': img1}
    doc.render(context)
    # 拆分原图片后缀,生成规范的docx文件名
    save_name = f"{os.path.splitext(img_name)[0]}.docx"
    doc.save(os.path.join(folder, save_name))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 00:39:44