如何从Azure Databricks工作区读取Python文件?解决文件不存在错误
解决Azure Databricks中读取文件的FileNotFoundError问题
问题场景
用户需使用Fernet库对Python文件进行加解密,源代码存储在Azure Databricks工作区中,执行以下读取代码时触发错误:
with open('/Users/abc@gmail.com/Encrypt_Decrypt_POS/Sample.ipynb','r') as f_read: file_data = f_read.read()
错误信息:
FileNotFoundError: [Errno 2] No such file or directory: '/Users/abc@gmail.com/Encrypt_Decrypt_POS/Sample
解决方法
Azure Databricks的计算节点本地文件系统无法直接访问工作区的/Users/xxx逻辑路径,需改用适配Databricks环境的文件访问方式:
1. 确认文件存储位置并调整路径
- 如果文件已上传到DBFS(Databricks文件系统),使用
/dbfs/前缀的路径:with open('/dbfs/FileStore/Encrypt_Decrypt_POS/Sample.ipynb', 'r') as f_read: file_data = f_read.read() - 如果文件在个人工作区,需先将文件复制到DBFS(工作区文件无法直接用
open()读取):# 复制工作区文件到DBFS dbutils.fs.cp("dbfs:/Workspace/Users/abc@gmail.com/Encrypt_Decrypt_POS/Sample.ipynb", "dbfs:/FileStore/Encrypt_Decrypt_POS/Sample.ipynb") # 再读取DBFS中的文件 with open('/dbfs/FileStore/Encrypt_Decrypt_POS/Sample.ipynb', 'r') as f_read: file_data = f_read.read()
2. 使用Databricks官方工具读取(推荐)
用dbutils.fs工具直接读取文件,无需依赖本地文件系统:
# 读取文件全部内容 file_data = dbutils.fs.head("/FileStore/Encrypt_Decrypt_POS/Sample.ipynb")
3. 验证路径有效性
执行以下命令检查目标路径是否存在:
dbutils.fs.ls("/FileStore/Encrypt_Decrypt_POS/")
若返回结果包含Sample.ipynb,说明路径正确;若为空,需确认文件上传的实际位置。
内容的提问来源于stack exchange,提问作者Shubham Mahajan
相关产品推荐
相关产品推荐

