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

macOS下Python打开密码保护Word/docx的等效代码方案

问题根因

你原有代码依赖Windows专属的COM组件接口调用本地Word程序,comtypes是仅适配Windows平台的COM封装库,macOS无COM运行环境,因此会抛出导入错误,不存在跨平台直接兼容的写法,需要改用macOS支持的实现路径。


方案1:调用本地Microsoft Word客户端打开(与原Windows代码行为完全一致)

macOS版Microsoft Word原生支持AppleScript脚本控制,无需安装额外专属依赖,直接用Python内置模块即可实现和原代码完全等效的效果:启动Word程序、传入密码、以只读模式打开目标文档。
实现代码:

import subprocess

def open_password_protected_docx(file_path: str, password: str, read_only: bool = True):
    apple_script = f'''
    tell application "Microsoft Word"
        activate
        open POSIX file "{file_path}" password document "{password}" read only {str(read_only).lower()}
    end tell
    '''
    subprocess.run(
        ["osascript", "-e", apple_script],
        check=True,
        capture_output=True
    )

# 调用示例:替换为你的文件绝对路径和文档密码
wordPathFile = "/Users/yourname/Documents/your_encrypted_file.docx"
the_pwd = "your_document_password"
open_password_protected_docx(wordPathFile, the_pwd)

注意事项:

  • file_path必须传入macOS格式的绝对路径(以/开头,不要用Windows的盘符路径)
  • 首次运行时系统会弹出权限提示,允许当前运行Python的终端/编辑器控制Microsoft Word即可
  • 代码默认以只读模式打开,和你原Windows代码参数一致,如果需要可编辑模式,调用函数时传入read_only=False

方案2:纯Python解密读取(不依赖本地安装Word)

如果你的需求不是拉起Word窗口打开文件,只是需要读取/处理加密docx的内容,可以用纯Python库实现解密和读取,全平台兼容,不需要本地安装Office。
首先安装依赖:

pip install msoffcrypto-tool python-docx

实现代码:

import io
import msoffcrypto
from docx import Document

wordPathFile = "/Users/yourname/Documents/your_encrypted_file.docx"
the_pwd = "your_document_password"

# 将解密后的文档加载到内存
decrypted_buffer = io.BytesIO()
with open(wordPathFile, "rb") as f:
    office_doc = msoffcrypto.OfficeFile(f)
    office_doc.load_key(password=the_pwd)
    office_doc.decrypt(decrypted_buffer)

# 读取解密后的文档内容
decrypted_buffer.seek(0)
doc = Document(decrypted_buffer)
# 示例:打印文档所有段落文本
for para in doc.paragraphs:
    print(para.text)

# 如需保存为无密码的普通docx,取消注释以下代码
# with open("decrypted_output.docx", "wb") as f:
#     f.write(decrypted_buffer.getvalue())

注意事项:

  • 该方案不会启动Word客户端,适合批量处理文档内容的场景
  • 仅支持Office 2007及以上版本的.docx格式,不支持旧版.doc二进制格式

内容的提问来源于stack exchange,提问作者X0-user-0X

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 11:06:22