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

需求:编写循环函数分析文件夹内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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:20:28