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

S3存储桶目录访问及文件获取技术求助(基于boto3)

S3存储桶文件获取解决方案

问题背景

我的S3存储桶结构如下:

—- videos
      —-carvideos
         Tesla.video
         Chevrolet.video
      Car.png
      Bike.png

—-Files

需要实现:

  • 从videos路径下获取Car.png文件
  • 从videos/carvideos路径下获取所有视频文件

现有代码基础:

import boto3
s3 = boto3.resource('s3', access_key, secret_access_key)

bucket = s3.Bucket('name of my bucket')

1. 获取videos/Car.png文件

S3中没有真实的目录结构,文件的位置由**键(Key)**标识,videos/Car.png就是该文件的完整键值。你可以选择直接下载到本地,或者读取文件内容:

下载到本地

# 替换第二个参数为你想要保存的本地路径
bucket.download_file('videos/Car.png', './Car.png')

读取文件内容(不下载)

# 获取S3对象
car_png_obj = s3.Object('name of my bucket', 'videos/Car.png')
# 读取文件二进制内容
file_content = car_png_obj.get()['Body'].read()

2. 获取videos/carvideos/下所有视频文件

通过指定Prefix(前缀)过滤该路径下的所有对象,遍历处理每个文件:

# 过滤前缀为videos/carvideos/的所有对象
for obj in bucket.objects.filter(Prefix='videos/carvideos/'):
    # 跳过S3自动生成的"目录"占位对象(如果存在)
    if obj.key == 'videos/carvideos/':
        continue
    # 下载文件到本地,这里以文件名作为本地保存名称
    bucket.download_file(obj.key, obj.key.split('/')[-1])
    
    # 若只需读取内容,可替换为:
    # video_content = obj.get()['Body'].read()
    # 后续处理视频内容

注意事项

  • 替换代码中的'name of my bucket'为你的实际存储桶名称
  • 确保AWS凭证拥有该存储桶的s3:GetObject权限
  • S3的路径分隔符为正斜杠/,不要使用反斜杠

内容的提问来源于stack exchange,提问作者Kaynan Felipe Rodrigues

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 23:05:30