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

从多个含同名文件的URL下载并批量重命名图片

解决同名图片下载时自动递增命名的问题

直接修改你的代码,通过循环计数器和拆分文件名后缀的方式,就能实现下载时自动给同名文件加上递增编号:

import requests    

image_url =[
  'https://s3-eu-west-1.amazonaws.com/sheffdocfest.com/attachments/data/000/103/975/thumbnail/compressed.jpg',
  'https://s3-eu-west-1.amazonaws.com/sheffdocfest.com/attachments/data/000/105/093/thumbnail/compressed.jpg',
  'https://s3-eu-west-1.amazonaws.com/sheffdocfest.com/attachments/data/000/103/984/thumbnail/compressed.jpg',
  'https://s3-eu-west-1.amazonaws.com/sheffdocfest.com/attachments/data/000/107/697/thumbnail/compressed.jpg'
]

# 使用enumerate获取循环索引,start=1让编号从1开始
for idx, img in enumerate(image_url, start=1):
    # 拆分文件名和后缀
    original_name = img.split('/')[-1]
    name_part, ext_part = original_name.rsplit('.', 1)  # 从最后一个.拆分,避免文件名里有多个点的情况
    # 拼接新文件名
    file_name = f"{name_part}{idx}.{ext_part}"
    print(f"Downloading file:{file_name}")
    r = requests.get(img, stream=True)
    with open(file_name, 'wb') as f:
        for chunk in r:
            f.write(chunk)

关键部分说明:

  • enumerate(image_url, start=1):给每个URL分配一个从1开始的序号,确保第一个文件是compressed1.jpg,第二个是compressed2.jpg,以此类推。
  • original_name.rsplit('.', 1):从文件名的最后一个.处拆分,既能处理compressed.jpg这种常规文件名,也能兼容image.v2.jpg这类带多个点的文件名,保证后缀拆分准确。
  • f"{name_part}{idx}.{ext_part}":用f-string拼接新文件名,语法直观易懂,适合新手快速掌握。

如果之后需要避免覆盖本地已存在的编号文件,可以额外添加文件存在性判断逻辑,但当前需求下,上面的代码完全能满足按顺序自动命名的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:57:25