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

如何编写循环遍历emotion下所有子文件夹并批量清空其中的png图片

批量遍历子文件夹清空PNG文件的实现方案

核心逻辑

不需要手动枚举每个子文件夹路径,只需定义好emotion总目录的路径,通过Python内置的目录遍历接口自动获取所有子文件夹路径,复用已有的单文件夹删除逻辑即可完成批量操作,以下是两种适配不同场景的可直接运行的代码:

写法1:通用递归遍历(适配任意层级嵌套目录)

使用os.walk自动扫描整个目录树,无论子文件夹下有多少层嵌套结构,都能精准匹配到所有PNG文件:

import os

# 替换为你自己的总目录实际路径
root_dir = r'C:\Users\emotion'

for dir_path, _, file_names in os.walk(root_dir):
    for file_name in file_names:
        # 兼容大小写PNG后缀的文件
        if file_name.lower().endswith('.png'):
            os.remove(os.path.join(dir_path, file_name))

说明:os.walk会逐层扫描目标目录,依次返回当前遍历的文件夹完整路径、该路径下的子目录列表、该路径下的所有文件列表,无需手动拼接每个子文件夹的访问路径。

写法2:轻量直接子文件夹遍历(适配当前示例的目录结构)

如果确定PNG文件仅存在于emotion目录下的第一层直接子文件夹(也就是angry、disgusted、fearful、happy这类和emotion直接相邻的文件夹,不存在更深的嵌套目录),可以用更轻量的循环实现:

import os

root_dir = r'C:\Users\emotion'

# 筛选出总目录下的所有子文件夹路径
all_sub_folders = [
    os.path.join(root_dir, entry)
    for entry in os.listdir(root_dir)
    if os.path.isdir(os.path.join(root_dir, entry))
]

# 对每个子文件夹执行原有删除逻辑
for folder in all_sub_folders:
    for img_name in os.listdir(folder):
        if img_name.lower().endswith('.png'):
            os.remove(os.path.join(folder, img_name))

实操提醒

  • 文件删除为不可逆操作,首次运行前可临时将os.remove()替换为print(os.path.join(dir_path, file_name)),打印所有待删除路径做校验,避免误删其他非目标文件
  • 代码中加入了.lower()做后缀兼容,可覆盖后缀为大写.PNG的文件,比仅匹配小写.png的判断逻辑更严谨
  • 后续如果需要支持其他格式的图片,只需修改endswith的匹配规则,无需改动整体循环结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 20:24:04