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

如何用Python向名称含斜杠的S3桶上传文件?

问题分析

首先明确:AWS S3桶的名称不允许包含斜杠(/),报错信息里的正则规则已经明确了桶名只能由字母、数字、点、连字符、下划线组成。不存在名为waterbucket/sample的S3桶,你实际想要的应该是在waterbucket桶下,将文件写入sample前缀(即S3控制台显示的"文件夹"路径)。

修正后的Python脚本

先修正原脚本里的几处错误:

  • pathLib拼写错误,应为小写的pathlib
  • 移除多余的folder.format(bucket_name)调用,直接使用桶名即可
  • 将对象键(object_name)设置为包含前缀的路径,即sample/file.json

修正后的代码:

import boto3
import os
import pathlib
import logging

# 初始化S3资源
s3 = boto3.resource("s3")
bucket_name = "waterbucket"
# 对象键包含前缀路径,相当于写入waterbucket桶下的sample路径下
object_name = "sample/file.json"

# 获取本地文件的绝对路径
file_name = os.path.join(pathlib.Path(__file__).parent.resolve(), "file.json") 
# 执行上传:桶名为waterbucket,对象键带前缀路径
s3.meta.client.upload_file(file_name, bucket_name, object_name)
关键说明
  • S3里的"文件夹"本质是对象键的前缀,没有真实的文件夹结构。比如sample/file.json这个对象键,在S3控制台会显示为sample文件夹下的file.json,但实际是一个独立存储的对象。
  • 无需手动创建sample前缀,上传带该前缀的对象时,S3会自动在控制台生成对应的路径显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 07:15:35