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

AWS Boto3(Rekognition)批量处理图片及单独保存响应技术问询

嘿,我来帮你搞定这两个批量处理的小问题,都是日常用AWS Rekognition时很常见的场景~

问题1:高效生成image1至image100的文件名列表

手动敲100个文件名确实太折磨人了,用Python的列表推导式就能轻松解决,一行代码直接生成你要的列表:

image_list = [f'image{i}.jpg' for i in range(1, 101)]

简单解释下:

  • range(1, 101)会生成从1到100的整数(因为range是左闭右开规则,所以右边写101才会包含100)
  • f-string f'image{i}.jpg'会自动把每个整数i拼接到文件名里,生成image1.jpg、image2.jpg……一直到image100.jpg
    如果之后要处理更多图片(比如到200),只要改range的第二个参数就行,完全不用手动修改列表,效率直接拉满!
问题2:每张图片响应单独保存为JSON文件

你原来的代码最后只保存了最后一张图片的响应(因为循环结束后response是最后一次循环的结果),要实现每张单独保存,把JSON写入的逻辑放到循环内部就行,而且可以用原图片的名字来命名对应的JSON文件,方便后续对应查找:

修改后的完整代码如下:

import json
from pathlib import Path
import boto3

# 初始化Rekognition客户端
client = boto3.client('rekognition')

# 高效生成文件名列表
image_list = [f'image{i}.jpg' for i in range(1, 101)]
responselist = []

for image in image_list:
    response = client.detect_labels(
        Image={
            'S3Object': {
                'Bucket': 'test1',
                'Name': image
            }})
    responselist.append(response)
    print(response)
    
    # 每张图片单独保存JSON,用原图片名(去掉后缀)作为JSON文件名
    json_filename = f'{image.split(".")[0]}.json'
    json_content = json.dumps(response, indent=4)  # indent=4让JSON格式更美观,可选
    Path(json_filename).write_text(json_content)

补充说明:

  • image.split(".")[0]会把image1.jpg拆分成['image1', 'jpg'],取第一个元素就是不带后缀的文件名,这样生成的JSON就是image1.json,和原图片一一对应
  • 加上indent=4是让生成的JSON文件排版更整齐,方便阅读,不需要的话可以直接去掉这个参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 23:22:39