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

使用Databricks将Docx保存至Azure Blob Storage失败求助

解决OSError: [Errno 95] Operation not supported问题

错误原因

出现该错误是因为python-docx的save方法无法兼容DBFS(Databricks File System)的FUSE挂载机制,直接写入/dbfs/路径会触发不支持的文件操作。另外你的挂载代码存在变量名不一致问题:定义的是storage_account_access_key,但配置参数里用了storage_account_key,这会导致挂载失败(若实际运行时未修正)。

解决方案

步骤1:修正挂载代码的变量名

确保变量名一致,避免挂载失败:

storage_account_name = "你的存储账户名"
storage_account_access_key = "你的访问密钥"
container_name = "docs"
mount_point = "/mnt/my_mount_point" 

dbutils.fs.mount(
  source=f"wasbs://{container_name}@{storage_account_name}.blob.core.windows.net",
  mount_point=mount_point,
  extra_configs={f"fs.azure.account.key.{storage_account_name}.blob.core.windows.net": storage_account_access_key}
)

步骤2:修改文件保存逻辑

将临时文件保存到Databricks节点的本地临时目录/tmp/(而非/dbfs/tmp/),再复制到挂载的Azure存储路径:

from docx import Document

doc = Document()
doc.add_heading('My Document Title', level=1)

# 保存到节点本地临时目录
temp_file_path = '/tmp/docgerada.docx'
doc.save(temp_file_path)

# 复制到挂载的Azure存储路径
destination_path = f"{mount_point}/new_document.docx"
dbutils.fs.cp(f'file:{temp_file_path}', destination_path)

额外注意事项

  • 确认挂载操作已成功执行,可通过dbutils.fs.ls(mount_point)验证是否能访问容器内容
  • 本地/tmp目录空间有限,大文件操作后建议删除临时文件:import os; os.remove(temp_file_path)
  • 若需持久化临时文件,也可使用DBFS的/dbfs/tmp/,但需通过dbutils.fs.put或先写入本地再复制,避免直接用Python库写入

内容的提问来源于stack exchange,提问作者Antônio Farias

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 11:06:17