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 生态里它是一个基础组件,很多你日常在用的工具底层都依赖它。

相关推荐
爱吃苹果的梨叔3 小时前
2026年KVM over IP采购指南:BIOS级接管、并发和审计怎么验收
ide·python·tcp/ip·github
OsDepK3 小时前
获取免费API讯飞星辰maas平台
ide·github
OpenIM4 小时前
mage跨平台构建说明
开源·github·信息与通信
徐小夕7 小时前
我们放弃了单Agent方案:HiCAD 3.0 用 Harness 做多Agent编排,把3D建模的准确率提升了30%
前端·算法·github
Java面试题总结7 小时前
MarkItDown 再次登顶GitHub榜
开发语言·c#·github
佛系豪豪吖7 小时前
AtomCode 部署流程与使用经验
笔记·chatgpt·github·ai编程·gitcode
宝桥南山9 小时前
GitHub Copilot - 尝试使用一下Azure Devops MCP server
microsoft·微软·github·aigc·copilot·devops
MicrosoftReactor9 小时前
技术速递|提升 GitHub Agentic Workflows 的 Token 使用效率
ai·github·copilot·智能体
DogDaoDao9 小时前
【GitHub】last30days-skill 深度技术解析
深度学习·程序员·大模型·github·ai agent·agent skill
IT WorryFree9 小时前
GitHub / Gitee / Gitea / GitLab 四平台完整对比(定位、优缺点、适用场景)
gitee·github·gitea