如何用Python将多目录下的wav文件按规则分组存储为目标列表?
实现方案
以下代码可以直接实现你需要的分组效果:
import os from collections import defaultdict target_list = [] for root, _, files in os.walk("./dataset/"): # 跳过dataset根目录,只处理子文件夹 if root == "./dataset/": continue # 按文件名前缀分组 file_groups = defaultdict(list) for filename in files: prefix = filename.split("_")[0] file_groups[prefix].append(filename) # 按前缀顺序将分组加入结果列表 for prefix in sorted(file_groups.keys()): target_list.append(file_groups[prefix]) print(target_list)
逻辑说明
os.walk遍历目录时,第一层返回的是根目录dataset本身,没有需要处理的文件,直接跳过- 利用
defaultdict做分组容器,以文件名下划线前的a1、a2作为分组标识,将同前缀的两个音频文件放在同一子列表中 - 按前缀排序后把所有分组汇总,最终输出的
target_list就和你要求的格式一致
调整提示
如果你后续需要调整分组规则,只需要修改prefix = filename.split("_")[0]这一行的前缀提取逻辑即可适配。
内容的提问来源于stack exchange,提问作者Aniiya0978
相关产品推荐
相关产品推荐

