如何使用Python创建包含音频文件的目录列表
用Python生成包含音频文件的目录列表
原代码逻辑存在问题,它只是简单收集了os.walk返回的所有内容(目录路径、子目录名、所有文件名),既没有筛选音频文件,也没有正确处理os.walk的返回值。以下是实现需求的正确方案:
实现思路
- 定义需要识别的音频文件扩展名集合(覆盖常见格式)
- 遍历目标目录及其所有子目录
- 对每个文件判断扩展名是否属于音频格式,收集符合条件的文件完整路径
完整代码
import os # 定义常见音频文件扩展名(可根据需求增减) AUDIO_EXTENSIONS = {'.mp3', '.wav', '.flac', '.aac', '.ogg', '.m4a', '.wma'} def collect_audio_files(target_path): audio_file_list = [] # 遍历目录树:root=当前目录路径,dirs=当前目录下的子目录列表,files=当前目录下的文件列表 for root, _, files in os.walk(target_path): for file_name in files: # 获取文件扩展名并转为小写,避免大小写差异导致漏判 file_extension = os.path.splitext(file_name)[1].lower() if file_extension in AUDIO_EXTENSIONS: # 拼接完整文件路径并加入列表 full_file_path = os.path.join(root, file_name) audio_file_list.append(full_file_path) return audio_file_list # 以当前目录为起始路径收集音频文件 audio_files = collect_audio_files(".") # 输出结果 print(f"共找到 {len(audio_files)} 个音频文件:") for file in audio_files: print(file)
原代码问题说明
os.walk每次迭代返回的是(root, dirs, files)元组,原代码的循环for dirs in os.walk(path):会把这个元组作为迭代元素,后续for dir in dirs:会逐个遍历root字符串、dirs列表、files列表,导致最终的x列表混合了目录路径、子目录名和所有文件名,完全没有筛选音频文件。- 没有针对音频文件的扩展名判断,无法区分普通文件和音频文件。
内容的提问来源于stack exchange,提问作者TINSEL19
相关产品推荐
相关产品推荐

