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

使用Python操作docm文件遇AttributeError错误的解决咨询

解决python-docx-docm操作docm文件时的AttributeError问题

问题分析

你使用python-docx-docm库操作docm文件时出现AttributeError: 'Part' object has no attribute 'document'错误,但操作docx文件正常,核心原因是当前运行环境实际调用的是不支持docm格式的原python-docx库,而非python-docx-docm扩展库,或库的安装/导入逻辑存在问题。

解决方案

1. 确保正确安装扩展库并卸载原库

原python-docx不支持docm格式,必须替换为扩展库。执行以下命令:

pip uninstall -y python-docx
pip install python-docx-docm

2. 验证代码运行逻辑

安装完成后,保持原有代码结构即可,注意路径使用原始字符串避免转义问题:

import docx

doc = docx.Document(r'C:\Users\clemdcz\Desktop\my_file.docm')

all_paras = doc.paragraphs
for para in all_paras:
    print(para.text)
    print("-----------")

3. 备选方案:手动移除宏内容后处理

若上述方法无效,可利用docm本质是带宏的zip包特性,先移除宏相关文件再处理:

import zipfile
from pathlib import Path
import docx

# 复制docm并移除宏模块
docm_path = Path(r'C:\Users\clemdcz\Desktop\my_file.docm')
temp_docx = docm_path.with_suffix('.docx')

with zipfile.ZipFile(docm_path, 'r') as z_in:
    with zipfile.ZipFile(temp_docx, 'w') as z_out:
        for file_info in z_in.infolist():
            if file_info.filename != 'word/vbaProject.bin':
                z_out.writestr(file_info, z_in.read(file_info.filename))

# 处理临时docx文件
doc = docx.Document(temp_docx)
for para in doc.paragraphs:
    print(para.text)
    print("-----------")

# 可选:删除临时文件
temp_docx.unlink()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 16:15:52