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

如何用代码将5000首歌的CSV文件批量生成100个50首歌的播放列表

批量生成播放列表解决方案

你的原代码存在几个问题:

  • csv.reader在with代码块结束后会失效,因为文件已经被关闭,外部无法读取内容
  • 嵌套循环逻辑错误,会重复读取所有行多次,导致列表内容远超预期
  • 仅能生成单个播放列表,无法批量输出

下面是修正后的代码,可直接生成100个各含50首歌曲的播放列表:

import csv

path = "Top5000.csv"

def csv_to_playlists(path, songs_per_playlist=50) -> list[list[str]]:
    # 读取所有歌曲名称(假设CSV第二列是歌曲名,第一行是表头)
    all_songs = []
    with open(path, newline='', encoding='utf-8') as file:
        reader = csv.reader(file)
        next(reader)  # 跳过表头行,如果没有表头可删除这行
        for row in reader:
            all_songs.append(row[1])
    
    # 拆分歌曲列表为多个播放列表
    playlists = []
    for i in range(0, len(all_songs), songs_per_playlist):
        playlist = all_songs[i:i+songs_per_playlist]
        playlists.append(playlist)
    
    return playlists

# 调用函数并获取结果
playlists = csv_to_playlists(path)
# 验证数量:应该输出100
print(f"生成播放列表数量:{len(playlists)}")
# 验证第一个播放列表的歌曲数:应该输出50
print(f"第一个播放列表歌曲数:{len(playlists[0])}")

代码说明

  • 先一次性读取所有歌曲名称,确保文件操作在with块内完成,避免资源泄漏
  • 使用切片操作all_songs[i:i+songs_per_playlist]按固定数量拆分列表,高效且简洁
  • 加入表头跳过逻辑,如果你的CSV没有表头,直接删除next(reader)这一行即可
  • 返回的是一个二维列表,每个子列表对应一个播放列表

内容的提问来源于stack exchange,提问作者Stan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:35:21