You need to enable JavaScript to run this app. Databricks中使用通配符删除存储账户内.txt文件的方法
优惠活动
大模型
产品
解决方案
定价
更多

Databricks中使用通配符删除存储账户内.txt文件的方法

结合通配符通过dbutils.fs.rm()删除.txt文件的实现方法

首先需要明确常见认知误区:dbutils.fs.rm() 本身不支持在路径参数中嵌入通配符完成批量匹配删除,必须搭配支持通配符枚举能力的dbutils.fs.ls(),先筛选出所有符合条件的.txt文件,再逐路径调用rm完成删除。

具体操作步骤:

  1. 通过通配符枚举所有匹配的.txt文件
    # 替换为你实际存储的目标扫描路径
    target_root_path = "/mnt/your-storage-mount/target-folder/"
    
    # 匹配当前层级目录下所有后缀为.txt的文件
    matched_entries = dbutils.fs.ls(f"{target_root_path}*.txt")
    
    # 如需递归匹配所有嵌套子目录下的.txt文件,替换为递归通配符
    # matched_entries = dbutils.fs.ls(f"{target_root_path}**/*.txt")
    
    Databricks文件系统支持的通配符规则:
    • * 匹配任意长度的任意字符,*.txt 仅匹配当前目录层级下以.txt为后缀的条目
    • ** 匹配任意层级的嵌套目录,**/*.txt 会递归扫描所有子目录下的同后缀文件
    • ? 匹配单个任意字符
  2. 逐条目执行删除操作,跳过匹配到的同名目录避免误删
    for entry in matched_entries:
        # 仅对普通文件执行删除,跳过目录类型的条目
        if not entry.isDir():
            dbutils.fs.rm(entry.path)
    
其他可行实现方案
  • 基于PySpark的分布式枚举删除
    当目标路径下的文件总量超过10万量级时,驱动端单线程遍历的dbutils.fs.ls()容易出现列表超时,此时可借助Spark分布式读取能力枚举文件路径,再执行批量删除:
    from pyspark.sql.functions import input_file_name
    
    # 分布式读取所有匹配的.txt文件路径,规避驱动端列表瓶颈
    matched_paths = (
        spark.read
        .format("binaryFile")
        .load("/mnt/your-storage-mount/target-folder/**/*.txt")
        .select(input_file_name().alias("path"))
        .rdd.map(lambda row: row.path)
        .collect()
    )
    
    # 逐路径执行删除
    for path in matched_paths:
        dbutils.fs.rm(path)
    
  • 基于%fs魔法命令的快速删除
    笔记本环境下可直接通过%fs命令调用文件系统操作,该命令支持通配符匹配删除当前层级的文件,适合简单场景下的快速操作:
    %fs rm /mnt/your-storage-mount/target-folder/*.txt
    
    注意:该方法不支持**递归通配符,无法自动匹配嵌套子目录下的文件,且大文件量场景下性能较差。
  • 云存储侧的自动化清理
    针对需要周期性重复执行的.txt文件清理任务,可直接在底层云存储(ADLS Gen2、S3、GCS)侧配置生命周期规则,按文件后缀、路径标签自动清理匹配的.txt文件,无需依赖Databricks计算资源执行手动操作。
操作注意事项
  • 执行删除前务必先打印所有匹配到的文件路径做校验,确认匹配范围没有混入需要保留的.csv文件,避免误删:
    print("即将删除的文件路径清单:")
    for entry in matched_entries:
        if not entry.isDir():
            print(entry.path)
    
  • 生产环境的批量删除操作,建议先将匹配到的.txt文件移动到临时归档目录,设置3-7天的校验等待期后再做永久删除,降低误操作风险。
  • 不要直接给rm命令加recurse=True参数搭配通配符使用,否则容易触发范围外的递归删除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.29 08:54:03