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

如何使用Python boto3将文件写入S3存储桶内的指定文件夹

解决方案

核心逻辑

S3属于对象存储服务,不存在传统文件系统的实体文件夹。只要将上传的对象键(Key)配置为目标文件夹名/文件名的格式,S3会自动以路径层级的形式展示内容,无需提前创建目标文件夹。

现有代码问题

  • 代码中硬编码了Key='bulk_movies.json',完全没有用到函数定义的object_name参数,无法自定义上传路径
  • boto3客户端初始化拼写错误,b3.client('s3')应为boto3.client('s3')
  • 错误将存储桶名和路径拼接作为第二个参数传入,该参数仅支持填写纯存储桶名称,路径需要配置在Key参数中

修正后的实现代码

import boto3
from botocore.exceptions import ClientError

def upload_file(file_name, bucket, object_name = None):
    # 未指定对象名时默认取本地文件的文件名
    if object_name is None:
        object_name = file_name.split('/')[-1]
    s3 = boto3.client('s3')
    try:
        # 使用传入的object_name作为Key
        response = s3.upload_file(file_name, bucket, Key=object_name)
    except ClientError as e:
        print(e)
        return False
    print('Success!')
    return True

上传到指定文件夹的调用示例

要上传到存储桶bucket下的folderInBucket目录,直接将object_name设置为folderInBucket/文件名即可:

upload_file('./s3/bulk_movies.json', 'bucket', object_name='folderInBucket/bulk_movies.json')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 06:21:04