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

Azure Databricks中Python查找tables目录文件报FileNotFoundError

问题场景

我在使用Microsoft Azure Databricks服务时,需要读取名为tables的文件夹下的文件,对应界面文件展示如下:
Databricks界面文件预览
同一段文件遍历代码在Windows 10本地的PyCharm环境可以正常运行,迁移到Databricks环境后执行失败。

测试代码

import os
from os.path import isfile, join

working_dir = os.getcwd()
print(f"working dir = {working_dir}")
mypath = f"{working_dir}/tables"
files = [f for f in os.listdir(mypath) if isfile(join(mypath, f))]
for file in files:
    print(f"{file}")

运行结果对比

  • Windows 10 PyCharm环境正常输出:
C:\Users\bruker\PycharmProjects\test\venv\Scripts\python.exe C:/Users/bruker/PycharmProjects/test/test.py
working dir = C:\Users\bruker\PycharmProjects\test
1
2
  • Databricks环境报错:
working dir = /databricks/driver
FileNotFoundError: [Errno 2] No such file or directory: '/databricks/driver/tables'

我已经在Databricks界面确认目标文件存在,当前脚本从db-adapter路径运行:
Databricks运行路径截图


回答

报错原因

核心问题是混淆了Databricks的两套独立文件系统:

  • Python原生os模块默认操作集群驱动节点的本地磁盘,os.getcwd()返回的/databricks/driver就是本地磁盘的当前工作目录
  • Databricks UI文件浏览器里展示的文件默认存放在DBFS分布式文件系统中,和驱动节点本地磁盘是完全隔离的,代码去本地磁盘找存在DBFS里的tables文件夹,自然会报文件不存在
    本地Windows环境没有这种文件系统隔离,tables文件夹和脚本在同一磁盘目录下,所以代码可以正常运行。

解决方案

根据文件实际存放位置选择对应方法即可:

方案1:文件存放在DBFS(当前场景)

两种实现方式:

  1. 用Databricks原生dbutils工具操作(推荐,全运行时版本兼容):
# 替换为你的tables文件夹实际DBFS路径
mypath = "dbfs:/tables"
# 遍历路径,过滤掉子文件夹,只保留文件
files = [f.name for f in dbutils.fs.ls(mypath) if not f.isDir()]
for file in files:
    print(file)
  1. 保留原有os模块写法,使用DBFS的本地挂载前缀:
import os
from os.path import isfile, join

# DBFS默认挂载在本地磁盘的/dbfs路径下
mypath = "/dbfs/tables"
files = [f for f in os.listdir(mypath) if isfile(join(mypath, f))]
for file in files:
    print(file)

注意:部分定制版Databricks运行时可能禁用/dbfs挂载点,如果该方法报错直接换dbutils方案即可。

方案2:文件随脚本存放在工作区目录

如果tables文件夹是和脚本一起上传到工作区db-adapter路径下,没有存到DBFS,直接把整个tables文件夹上传到驱动节点的/databricks/driver目录,原有代码不需要修改就能直接运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 04:48:03