使用Python删除Databricks工作区文件失败,求排查脚本问题
问题原因与解决方法
核心问题:dbutils.fs.rm不支持通配符匹配
dbutils.fs.rm的路径参数不支持直接使用*.json这类通配符,你写的路径/Workspace/Users/xxx@company.com/*.json会被当作一个完整的文件名解析,而非匹配所有json文件,因此找不到对应文件,返回False且无文件被删除。
另外,开头导入from pyspark.sql import *确实没必要,删除文件不需要Spark SQL相关依赖,可以直接删掉。
解决办法
方法1:遍历目录删除指定后缀文件
用dbutils.fs.ls遍历目标目录,筛选出.json结尾的文件后逐个删除:
target_dir = '/Workspace/Users/xxx@company.com/' # 遍历目录下的所有文件/文件夹 for item in dbutils.fs.ls(target_dir): # 判断是否是文件且后缀为.json if item.isFile() and item.name.endswith('.json'): dbutils.fs.rm(item.path, True)
方法2:使用Shell命令(适用于DBFS挂载场景)
如果Workspace目录已挂载到本地文件系统,可使用%sh魔法命令配合shell通配符删除:
%sh rm -rf /dbfs/Workspace/Users/xxx@company.com/*.json
注意路径要加上DBFS对应的本地前缀/dbfs/。
额外检查点
- 确认路径拼写正确:检查邮箱地址、目录层级是否有误,确保
/Workspace/Users/xxx@company.com/确实存在且包含目标json文件。 - 权限验证:当前执行用户是否拥有该目录的删除权限,可通过
dbutils.fs.ls查看目录内容,验证能否正常访问。
内容的提问来源于stack exchange,提问作者Jose Maria Acevedo Reinoso
相关产品推荐
相关产品推荐

