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

如何在Pandas DataFrame中为重复名称添加后缀以下载图片?

解决重复文件名的图片下载脚本优化

原代码问题分析

  • 缩进错误:requests.get(url)及后续代码未包含在for循环内,导致仅处理Excel最后一行数据
  • 未实现重复文件名的后缀添加逻辑
  • 存在未使用的冗余代码file_name = url.split('/')

解决方案

先通过Pandas为重复名称生成带序号的文件名,再循环下载图片:

import requests
import pandas as pd

# 读取Excel数据
df = pd.read_excel(r'C:\Users\exdata1.xlsx')

# 为每个名称生成重复计数,从0开始
df['count'] = df.groupby('name').cumcount()

# 根据计数生成最终文件名
def generate_filename(row):
    if row['count'] == 0:
        return f"{row['name']}.jpeg"
    else:
        return f"{row['name']}-{row['count']}.jpeg"

df['filename'] = df.apply(generate_filename, axis=1)

# 循环下载图片
for index, row in df.iterrows():
    url = row['url']
    filename = row['filename']
    
    try:
        r = requests.get(url)
        r.raise_for_status()  # 捕获请求错误
        
        with open(filename, "wb") as f:
            f.write(r.content)
        print(f"已保存:{filename}")
    except Exception as e:
        print(f"下载失败 {filename}:{str(e)}")

关键说明

  • groupby('name').cumcount():对每个name分组后,为组内每行分配从0开始的序号,第一个重复项序号为0,第二个为1,以此类推
  • generate_filename函数:根据序号判断是否添加后缀,避免第一个文件出现名称-0.jpeg的情况
  • 添加try-except块捕获网络请求异常,避免单个URL失败导致整个脚本终止

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 20:01:07