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

Python编写docx转pdf工具触发com_error找不到文件问题

问题原因

报错的核心原因是路径传参错误:

  • os.listdir() 仅返回目录下的文件名/子文件夹名,不会带上父目录路径,你直接把这个裸文件名传给convert函数,相当于传入了相对路径
  • 调用Microsoft Word的COM组件时,COM进程的默认工作目录会被重置为C:\Windows\system32,Word会在这个目录下查找你传入的裸文件名,自然触发文件不存在的报错。
    另外你直接用字符串加法拼接路径的写法鲁棒性很差,容易出现斜杠缺失、转义字符冲突的问题。
修复代码

修复时要注意所有传入COM接口的路径必须是拼接完成的绝对路径,同时增加必要的异常防护:

import os

# 以当前脚本所在目录为基准拼接路径,避免工作目录变动导致路径错误
base_dir = os.path.dirname(os.path.abspath(__file__))
docx_source_dir = os.path.join(base_dir, 'docxFiles')
pdf_output_dir = os.path.join(base_dir, 'pdfFiles')

# 自动创建输出目录,避免目录不存在报错
os.makedirs(pdf_output_dir, exist_ok=True)

for file_name in os.listdir(docx_source_dir):
    # 过滤非docx格式的文件、Word生成的临时文件
    if not file_name.lower().endswith('.docx') or file_name.startswith('~$'):
        continue
    # 拼接源文件绝对路径
    source_docx = os.path.join(docx_source_dir, file_name)
    # 拼接输出pdf的绝对路径
    output_pdf = os.path.join(pdf_output_dir, f"{os.path.splitext(file_name)[0]}.pdf")
    # 传入完整绝对路径执行转换
    convert(source_docx, output_pdf)
注意事项
  • 所有和Office COM组件交互的路径参数,必须传入绝对路径,不要传任何形式的相对路径,避免工作目录不匹配的问题
  • 转换逻辑里记得增加Word进程的回收逻辑,避免转换完成后残留WINWORD.EXE后台进程占用资源
  • 遍历文件时过滤掉Word打开文档时生成的~$开头的临时文件,避免尝试转换临时文件报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 08:54:20