如何在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
相关产品推荐
相关产品推荐

