Skip to main content

fsspec filesystem for OSS

Project description

PyPI Status Python Version License

Tests Codecov pre-commit Black

OSSFS is a Python-based interface for file systems that enables interaction with OSS (Object Storage Service). Through OSSFS, users can utilize fsspec’s standard API to operate on OSS objects

Installation

You can install OSSFS via pip from PyPI:

$ pip install ossfs

Up-to-date package also provided through conda-forge distribution:

$ conda install -c conda-forge ossfs

Quick Start

Here is a simple example of locating and reading an object in 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'

For more use case and apis please refer to the documentation of fsspec

Async OSSFS

Async OSSFS is a variant of ossfs that utilizes the third-party async OSS backend aiooss2, rather than the official sync one, oss2. Async OSSFS allows for concurrent calls within bulk operations, such as cat, put, and get etc even from normal code, and enables the direct use of fsspec in async code without blocking. The usage of async OSSFS is similar to the synchronous variant; one simply needs to replace OSSFileSystem with AioOSSFileSystem need to do is replacing the OSSFileSystem with the AioOSSFileSystem

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

Although aiooss2 is not officially supported, there are still some features that are currently lacking. However, in tests involving the put/get of 1200 small files, the async version of ossfs ran ten times faster than the synchronous variant (depending on the pool size of the concurrency).

Task

time cost in (seconds)

put 1200 small files via OSSFileSystem

35.2688 (13.53)

put 1200 small files via AioOSSFileSystem

2.6060 (1.0)

get 1200 small files via OSSFileSystem

32.9096 (12.63)

get 1200 small files via AioOSSFileSystem

3.3497 (1.29)

Contributing

Contributions are very welcome. To learn more, see the Contributor Guide.

License

Distributed under the terms of the Apache 2.0 license, Ossfs is free and open source software.

Issues

If you encounter any problems, please file an issue along with a detailed description.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ossfs-2025.5.0.tar.gz (40.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ossfs-2025.5.0-py3-none-any.whl (25.0 kB view details)

Uploaded Python 3

File details

Details for the file ossfs-2025.5.0.tar.gz.

File metadata

  • Download URL: ossfs-2025.5.0.tar.gz
  • Upload date:
  • Size: 40.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for ossfs-2025.5.0.tar.gz
Algorithm Hash digest
SHA256 722e7044fbcd84cc992e5cd6821d5f19bed334216c140d6e46ffb21979d49ce0
MD5 f227dc0f14cfb0e21491ae5cfbf6a3fa
BLAKE2b-256 b18ad0ca844e613d0b8d4b80f8098528a599f2fbf05c3853a75d27d3e645928e

See more details on using hashes here.

File details

Details for the file ossfs-2025.5.0-py3-none-any.whl.

File metadata

  • Download URL: ossfs-2025.5.0-py3-none-any.whl
  • Upload date:
  • Size: 25.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for ossfs-2025.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 17b92e5cfd636690665969687806ddba0155ab71245a731eb86b17f4c2648dc2
MD5 490f37be7507a9d5a62a8823834725b9
BLAKE2b-256 5a47977e1a2f8045c1fade1260c99b8158ee6bcd698fa2d46988f079b45f28b2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page