s3fs:用操作本地文件的方式读写 S3

s3fs:用操作本地文件的方式读写 S3

s3fs 在 GitHub 上已经拿到 1,033 Star 了。

这个项目属于 fsspec 生态,专门做一件事:给 Amazon S3 提供一个 Python 文件系统接口。基于 aiobotocore 实现,让你用 open、read、write 这些熟悉的方法直接操作 S3 上的对象,不需要关心底层的 HTTP 请求和分页逻辑。

1、这玩意儿是干嘛的

一句话:把 S3 对象存储包装成你熟悉的文件系统。

在 Python 里读写 S3 文件,通常要走 boto3 或 aiobotocore。这意味着你要先创建客户端、配置 region、处理各种异常、手动管理流。代码写出来差不多是这样:

python 复制代码
import boto3

s3 = boto3.client('s3')
response = s3.get_object(Bucket='my-bucket', Key='my-file.txt')
content = response['Body'].read()

s3fs 把这些都包了一层。上面的代码变成:

python 复制代码
import s3fs

fs = s3fs.S3FileSystem()
with fs.open('my-bucket/my-file.txt', 'r') as f:
    content = f.read()

目录操作也一样:

python 复制代码
fs.ls('my-bucket')
fs.mkdir('my-bucket/new-folder')
fs.rm('my-bucket/old-file.txt')

2、为什么要用它

做过数据管线的人都清楚,S3 交互代码很容易变成一坨模板代码。配置客户端、处理分页、管理流式读写、重试逻辑......每次新项目都要复制粘贴一遍,测试还要 mock S3 服务。

s3fs 把这些重复工作都收进去了。更重要的是,它是 fsspec 的标准实现之一。fsspec 是 Python 里文件系统规范的统一抽象,pandas、xarray、dask 这些主流工具都认它。你的代码里写 s3://my-bucket/data.csv,pandas 底层自动调度 s3fs 来读。

异步场景它也能覆盖。基于 aiobotocore,所有操作都支持异步接口。并发读写大量小文件时,不会因为同步等待而卡死。

3、核心能力

  • 完整的文件系统操作:open、read、write、append、copy、move、rm、mkdir、ls、info
  • 流式读写:大文件不需要全部加载到内存,边读边处理
  • 目录缓存:重复列目录时减少 API 调用,降低成本
  • 异步支持:基于 aiobotocore 的 async 接口,适合高并发场景
  • 与 fsspec 生态集成:pandas、dask、xarray 开箱即用
  • 兼容多种 S3 端点:AWS、MinIO、Ceph、阿里云 OSS 等

4、安装和配置

安装很简单:

bash 复制代码
pip install s3fs

基本用法:

python 复制代码
import s3fs

fs = s3fs.S3FileSystem()

with fs.open('my-bucket/data.txt', 'w') as f:
    f.write('Hello, S3!')

with fs.open('my-bucket/data.txt', 'r') as f:
    print(f.read())

指定自定义端点:

python 复制代码
fs = s3fs.S3FileSystem(
    endpoint_url='https://play.minio.io:9000',
    key='minio',
    secret='minio123'
)

5、适合哪些人用

  • 需要在 Python 里频繁读写 S3 的数据工程师
  • 用 pandas、dask 处理云端数据的分析师
  • 搭数据管线、不想重复写 S3 模板代码的开发者
  • 用 MinIO 或兼容 S3 的私有存储的团队

6、写在最后

s3fs 的思路很直接:用统一的文件系统抽象覆盖各种存储后端。S3 是对象存储,但很多时候你只想把它当文件系统来用。这个项目就是干这个的,没有多余的东西,代码量也不大,但正好填平了那层 gap。一千多 Star 不算多,但在 fsspec 生态里它是一个基础组件,很多你日常在用的工具底层都依赖它。

相关推荐
粥里有勺糖32 分钟前
视野修炼-技术周刊第132期 | 一些有趣的组件
前端·github·aigc
智碳能碳管理平台35 分钟前
企业能碳管理系统的月度锁账、防篡改与留痕怎么架构
架构·github·能碳管理系统·智碳能碳管理平台·企业能碳管理系统·绿色工厂申报saas·能碳管理平台
mjhcsp2 小时前
Github Copilot 新手极速上手指南
github·copilot
重生之我来学Python2 小时前
Git-SVN 混合开发,从入门到精通!
开发语言·git·svn·github
u1301302 小时前
GitHub 热榜项目:日榜(2026-09-05)
github
m4Rk_3 小时前
【论文阅读】Agent 记忆机制(61):CFGM——用粗到细的记忆落地贯通经验采集、知识蒸馏与在线纠错
论文阅读·人工智能·学习·开源·github
是2的10次方啊3 小时前
GitNexus:给 AI 代理装上代码知识图谱
github
其实防守也摸鱼4 小时前
OpenClaw 深度解析:从原理到实战的完整指南
运维·服务器·数据库·github·copilot
峰向AI5 小时前
产品经理神器:PRD 直接变可点击网页!
github
Rescenix6 小时前
流式瀑布渐变闪烁根治-硬核技术版
架构·github