适用于OSS的fsspec文件系统
项目描述
OSSFS是一个基于Python的文件系统接口,它允许与OSS(对象存储服务)交互。通过OSSFS,用户可以利用fsspec的标准API操作OSS对象
安装
$ 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允许在批量操作中并发调用,例如cat、put和get等,即使在普通代码中也能实现,并且允许在不阻塞的情况下直接使用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 查看哈希)
关闭
ossfs-2023.12.0.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f99eb2d74717d22551b1f32ec9434587962627a816a64536dc47d68470536110 |
|
MD5 | 3155aeee96450328bbf6cbf358db8d20 |
|
BLAKE2b-256 | d2424cdce6e1ff4ce53c33cdc0dc1d212207181af3037d0a3a789367da42a266 |
关闭
ossfs-2023.12.0-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d1c5bbd24e7c0b3badd47d9c659bfdfac96d148b7e5d1f88ccdaf26403e893ab |
|
MD5 | 70c091de7ca42e1fac6aeb2e3cdc9607 |
|
BLAKE2b-256 | 83c0121c6ae711376258a3e786d6afc991d022e3a74884ef4e6caa80b9c141a0 |