This package provides a native Python binding for Apache OpenDAL™, a data access layer that allows you to access various storage services in a unified way.
We release the OpenDAL Python binding independently of the
opendal crate (Rust core). For updates
and compatibility, use the Python binding version instead of the opendal crate
version.
- User guide: opendal.apache.org/docs/bindings/python — install, connect, common tasks, and going to production.
- API reference: opendal.apache.org/docs/python
- Services & configuration: opendal.apache.org/services
- Upgrade guide:
upgrade.md - Examples:
docs/examples
pip install opendalimport opendal
# Configure a service, then build an operator from it.
op = opendal.Operator("fs", root="/tmp")
# The same verbs work on every service.
op.write("test.txt", b"Hello World")
print(op.read("test.txt"))
print(op.stat("test.txt").content_length)To use a real backend, change the scheme and pass its configuration — the operations stay identical:
op = opendal.Operator("s3", bucket="your_bucket", region="your_region")OpenDAL also has a first-class async API via opendal.AsyncOperator. See
Getting started
and Connecting to your storage
for the full guide.
This project uses just as a command runner.
For a complete guide on building, testing, and contributing, see
CONTRIBUTING.md.
Check out the users list for more details on who is using OpenDAL.
Licensed under the Apache License, Version 2.0: http://www.apache.org/licenses/LICENSE-2.0
Apache OpenDAL, OpenDAL, and Apache are either registered trademarks or trademarks of the Apache Software Foundation.
