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

如何在Pandas中获取条目的列编号?解决图片重命名覆盖问题

修复图片下载重复覆盖问题:通过Pandas列编号生成唯一文件名

现有代码可从CSV下载图片,但同一行的图片会重复覆盖文件,原因是文件名未包含列编号导致不唯一。需求是按SKU_列编号(两位格式).jpg(如PRODUCT-A_01.jpg)命名图片,需要在遍历数据时获取列编号来生成唯一标识。

修改后的完整代码

import os
import requests
import pandas as pd

os.chdir(r'C:\Users\Bot\Python Directory')
df = pd.read_csv('images.csv')
df = df.fillna('')

for row_idx, row in df.iterrows():
    sku = row['SKU']
    # 跳过第0列的SKU,从第1列开始遍历图片链接
    for col_idx, img_url in enumerate(row[1:], start=1):
        if 'https://' in img_url:
            image = requests.get(img_url, allow_redirects=True)
            # 将列编号格式化为两位数字,生成唯一文件名
            filename = f"{sku}_{col_idx:02d}.jpg"
            with open(filename, 'wb') as f:
                f.write(image.content)

关键修改说明

  • 改用df.iterrows()遍历行,直接获取每行的SKU值,代码更直观
  • 内层循环用enumerate(row[1:], start=1):跳过第0列的SKU数据,从第1列开始遍历图片链接,同时获取列索引(从1开始计数)
  • 用f"{col_idx:02d}"将列编号格式化为两位数字,匹配需求的命名格式(如01、02)
  • 使用with open语句管理文件,比直接open更安全,避免文件未正常关闭的问题

原代码内层循环仅遍历单元格值,无法获取列位置信息,通过enumerate同时拿到列索引和值,就能生成唯一文件名,彻底解决重复覆盖问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:22:27