使用xlsxwriter提取WAV文件名信息写入Excel的优化咨询
优化后的清晰解决方案
作为Python新手,你已经迈出了很好的第一步!我们可以通过语义化的变量命名、清晰的拆分逻辑和自动行号管理来让代码更简洁易读,同时解决你之前遇到的问题。
完整优化代码
import os import xlsxwriter # 替换成你的目标文件夹路径 TARGET_FOLDER = "./your_wav_files" # 定义Excel表头,对应要提取的信息 EXCEL_HEADERS = ["Track Number", "Artist Name", "Title Name"] # 创建Excel工作簿和工作表 workbook = xlsxwriter.Workbook("audio_metadata.xlsx") worksheet = workbook.add_worksheet("Track Info") # 可选:设置表头格式,让表格更美观 header_style = workbook.add_format({ "bold": True, "align": "center", "border": 1, "bg_color": "#f0f0f0" }) # 写入表头到第一行(xlsxwriter的行索引从0开始) worksheet.write_row(0, 0, EXCEL_HEADERS, header_style) # 初始化数据行的索引,从第二行开始写入数据 current_row = 1 # 遍历文件夹下的所有WAV文件 for root, _, files in os.walk(TARGET_FOLDER): for filename in files: # 只处理.wav后缀的文件(兼容大小写,比如.WAV) if filename.lower().endswith(".wav"): # 第一步:拆分"曲目_艺术家"和"标题.wav"部分 track_artist_segment, title_segment = filename.split("_-_", 1) # 第二步:拆分曲目编号和艺术家名,替换下划线为空格 track_num, artist = track_artist_segment.split("_", 1) artist_name = artist.replace("_", " ") # 第三步:提取标题名(去掉.wav后缀,替换下划线为空格) # 使用rsplit避免标题中包含点的情况(更健壮) title_name = title_segment.rsplit(".", 1)[0].replace("_", " ") # 写入当前行的三个字段 worksheet.write(current_row, 0, track_num) worksheet.write(current_row, 1, artist_name) worksheet.write(current_row, 2, title_name) # 行号递增,准备写下一条数据 current_row += 1 # 关闭工作簿,完成写入 workbook.close()
关键优化点说明
语义化变量名
用track_num、artist_name、title_name这类一眼就能看懂的变量名,替代原来的xxinterpret、xxtitle,让代码可读性大幅提升,后续维护也更方便。清晰的拆分逻辑
把文件名拆分分成3个明确的步骤,每一步只做一件事,加上注释说明,即使是新手也能快速理解每一行代码的作用。自动行号管理
新增current_row变量来跟踪当前写入的行号,每次写完一行就自动递增,解决了你原代码中所有数据覆盖在同一行的问题。健壮性增强
- 用
filename.lower().endswith(".wav")兼容大小写不同的WAV文件(比如xxx.WAV) - 用
rsplit(".", 1)拆分扩展名,避免如果标题中包含点号时出错(虽然你的命名规则里没有,但这是更通用的写法)
- 用
可选的格式美化
给表头添加了加粗、居中、边框和背景色,让生成的Excel表格更专业美观,你可以根据自己的需求调整格式。
原代码的问题修复
- 解决了变量命名混乱的问题
- 修复了写入时固定行号导致数据覆盖的bug
- 优化了文件名拆分的逻辑,让流程更清晰
内容的提问来源于stack exchange,提问作者nEWBOB
相关产品推荐
相关产品推荐

