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

如何在Python中直接读取AWS S3存储桶中的JSON文件?

Python 原生的 open() 函数仅支持访问本地文件系统,无法解析 s3:// 协议的对象存储路径,因此会抛出 FileNotFoundError 报错。如果想要使用类似原生 open 的写法直接读取 S3 上的 JSON 文件,可以使用以下两种成熟的第三方库实现:


方案1:使用 s3fs 库

s3fs 基于 boto3 开发,实现了类 POSIX 的文件系统接口,会自动读取环境变量中配置的 AWS 凭证,无需额外传参。

  • 安装命令:
pip install s3fs
  • 读取代码示例:
import s3fs
import json
import os

# 你已经配置好的环境变量
os.environ['AWS_ACCESS_KEY_ID'] = "my_access_key"
os.environ['AWS_SECRET_ACCESS_KEY'] = "my_secret_access_key"
os.environ['AWS_DEFAULT_REGION'] = 'eu-central-1'

fs = s3fs.S3FileSystem()
# 类open写法读取S3文件
with fs.open("s3://bucketname/folder/file.json", "r", encoding="utf-8") as f:
    dict_list = json.load(f)  # 直接转换为Python字典列表

方案2:使用 smart_open 库

smart_open 对各类非本地存储协议做了适配,调用方式和原生 open 完全一致,代码侵入性更低。

  • 安装命令:
pip install smart_open
  • 读取代码示例:
from smart_open import open
import json
import os

# 你已经配置好的环境变量
os.environ['AWS_ACCESS_KEY_ID'] = "my_access_key"
os.environ['AWS_SECRET_ACCESS_KEY'] = "my_secret_access_key"
os.environ['AWS_DEFAULT_REGION'] = 'eu-central-1'

# 写法和原生open完全一致,直接支持s3://路径
with open("s3://bucketname/folder/file.json", "r", encoding="utf-8") as f:
    dict_list = json.load(f)

注:以上两个库底层均基于 boto3 实现,和直接使用 boto3 读取的性能没有明显差异,仅做了语法糖封装适配原生 open 的调用习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 15:54:05