跳转到主要内容

适用于OSS的fsspec文件系统

项目描述

PyPI Status Python Version License

Tests Codecov pre-commit Black

OSSFS是一个基于Python的文件系统接口,它允许与OSS(对象存储服务)交互。通过OSSFS,用户可以利用fsspec的标准API操作OSS对象

安装

您可以通过从pip安装PyPI上的OSSFS

$ pip install ossfs

也通过conda-forge发行版提供最新的包

$ conda install -c conda-forge ossfs

快速入门

以下是一个简单的示例,展示如何在OSS中定位和读取一个对象。

import ossfs
fs = ossfs.OSSFileSystem(endpoint='http://oss-cn-hangzhou.aliyuncs.com')
fs.ls('/dvc-test-anonymous/LICENSE')
[{'name': '/dvc-test-anonymous/LICENSE',
  'Key': '/dvc-test-anonymous/LICENSE',
  'type': 'file',
  'size': 11357,
  'Size': 11357,
  'StorageClass': 'OBJECT',
  'LastModified': 1622761222}]
with fs.open('/dvc-test-anonymous/LICENSE') as f:
...     print(f.readline())
b'                                 Apache License\n'

有关更多用例和API,请参阅fsspec的文档。

异步OSSFS

异步OSSFS是ossfs的一个变体,它使用第三方异步OSS后端aiooss2,而不是官方的同步版本oss2。异步OSSFS允许在批量操作中并发调用,例如catputget等,即使在普通代码中也能实现,并且允许在不阻塞的情况下直接使用fsspec进行异步编程。异步OSSFS的使用与同步版本类似;只需将OSSFileSystem替换为AioOSSFileSystem即可。

import ossfs
fs = ossfs.AioOSSFileSystem(endpoint='http://oss-cn-hangzhou.aliyuncs.com')
print(fs.cat('/dvc-test-anonymous/LICENSE'))
b'                                 Apache License\n'
...

尽管aiooss2没有得到官方支持,但仍然缺少一些功能。然而,在涉及1200个小文件的put/get测试中,ossfs的异步版本比同步版本快了十倍(取决于并发池的大小)。

任务

时间消耗(秒)

通过OSSFileSystem上传1200个小文件

35.2688 (13.53)

通过AioOSSFileSystem上传1200个小文件

2.6060 (1.0)

通过OSSFileSystem获取1200个小文件

32.9096 (12.63)

通过AioOSSFileSystem获取1200个小文件

3.3497 (1.29)

贡献

我们非常欢迎贡献。要了解更多信息,请参阅贡献指南

许可证

Apache 2.0许可证的条款下分发,Ossfs是免费和开源软件。

问题

如果您遇到任何问题,请提供详细描述后提交问题

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

ossfs-2023.12.0.tar.gz (41.6 kB 查看哈希)

上传时间 源代码

构建分发

ossfs-2023.12.0-py3-none-any.whl (25.0 kB 查看哈希)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面