需求:编写循环函数分析文件夹内MIDI文件调式并导出至Excel
批量分析MIDI文件调式并导出至Excel
你当前的代码只能逐个处理指定文件名的MIDI文件,要实现批量处理文件夹内所有MIDI并导出结果到Excel,可以结合文件遍历、错误处理和表格导出工具来完成,下面是适配需求的完整代码:
import music21 import os import pandas as pd # 替换为你的MIDI文件存放文件夹路径 midi_folder = "你的MIDI文件夹路径" # 用于存储分析结果的列表 analysis_results = [] # 遍历目标文件夹中的所有文件 for filename in os.listdir(midi_folder): # 仅处理后缀为.mid或.midi的文件 if filename.lower().endswith(('.mid', '.midi')): full_path = os.path.join(midi_folder, filename) try: # 解析MIDI文件 score = music21.converter.parse(full_path) # 分析调式 key_info = score.analyze('key') # 整理当前文件的分析结果 analysis_results.append({ "文件名": filename, "调式": f"{key_info.tonic.name} {key_info.mode}" }) print(f"完成处理:{filename}") except Exception as e: # 捕获异常,避免单个损坏文件导致程序中断 print(f"处理{filename}时出错:{str(e)}") analysis_results.append({ "文件名": filename, "调式": "分析失败" }) # 将结果转换为表格格式并导出到Excel result_df = pd.DataFrame(analysis_results) result_df.to_excel("MIDI调式分析结果.xlsx", index=False, encoding="utf-8") print("分析结果已导出到MIDI调式分析结果.xlsx")
关键说明
- 路径替换:把代码中的
"你的MIDI文件夹路径"改成你实际存放MIDI文件的路径,比如"D:/Research/MIDI_Files"或"/Users/xxx/midi_data" - 错误处理:加入
try-except块,确保单个损坏或无法解析的MIDI文件不会导致整个程序停止运行 - Excel导出:借助
pandas自动生成规范的两列表格,无需手动处理单元格格式
环境准备
如果还未安装所需依赖库,打开终端/命令提示符运行以下命令:
pip install music21 pandas openpyxl
(openpyxl是pandas导出Excel文件必需的依赖组件)
内容的提问来源于stack exchange,提问作者Mew Mew
相关产品推荐
相关产品推荐

