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

Python脚本功能增强需求:多CSV文件批量下载并按源文件名称分类存储

批量处理CSV文件并按对应文件夹存储下载文件的解决方案

我帮你调整了原脚本,完美实现你要的两个功能——批量处理任意数量的CSV文件,同时把每个CSV对应的下载文件存到同名文件夹里。修改后的代码如下:

from collections import Counter
import urllib.request
import csv
import os
import glob

# 获取当前目录下所有的CSV文件
csv_files = glob.glob('*.csv')

for csv_path in csv_files:
    # 提取CSV文件名(不带后缀)作为文件夹名
    folder_name = os.path.splitext(os.path.basename(csv_path))[0]
    # 创建文件夹,exist_ok=True避免重复创建报错
    os.makedirs(folder_name, exist_ok=True)
    
    with open(csv_path, encoding='utf-8') as csvfile:
        reader = csv.DictReader(csvfile)
        title_counts = Counter()
        for row in reader:
            name, ext = os.path.splitext(row['link'])
            title = row['title']
            title_counts[title] += 1
            # 处理标题里的特殊字符,避免文件名非法
            title_filename = f"{title}_{title_counts[title]}{ext}".replace('/', '-')
            # 拼接完整的保存路径:文件夹名+文件名
            save_path = os.path.join(folder_name, title_filename)
            urllib.request.urlretrieve(row['link'], save_path)

关键修改细节说明:

  • 批量处理CSV文件:引入glob模块,用glob.glob('*.csv')自动扫描当前目录下所有.csv文件,不管是20个还是更多,都能一次性处理,再也不用手动修改代码里的文件名啦。
  • 创建对应专属文件夹:对每个CSV文件,通过os.path.splitext和os.path.basename提取不带后缀的文件名作为文件夹名,再用os.makedirs创建文件夹,exist_ok=True参数保证即使文件夹已经存在也不会抛出错误。
  • 文件存储到对应文件夹:用os.path.join把文件夹名和处理后的文件名拼接成完整路径,这样每个CSV的下载文件都会乖乖存到和它同名的文件夹里,结构完全符合你的要求。

另外提个小建议:如果CSV文件编码不是默认格式,记得在open函数里指定encoding参数(比如encoding='utf-8'),避免读取时出现乱码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 17:32:28