Prerequisites
Before proceeding, ensure you have the necessary tools installed and configured. For more details, refer to the official installation guide: Install Azure CLI on Windows.
- Install Azure CLI (one-time setup)
winget install Microsoft.AzureCLIEnsure you have the latest version installed. - Login to Azure
az loginFollow the browser-based authentication flow.
Installing Required Python Package
The obstore package is a Python API for the Rust-based Object Store crate, which simplifies interaction with cloud storage systems.
pip install obstore --upgrade
Connecting to OneLake Storage
Once installed, you can connect to OneLake using the obstore package:
import obstore
from obstore.store import from_url
# Define storage path
store = from_url('abfss://sqlengines@onelake.dfs.fabric.microsoft.com/power.Lakehouse/Files', azure_use_azure_cli=True)
there is a PR by someone from the community where azure_use_azure_cli=True will not be needed the system will automatically pick the available authentification
Listing Files in OneLake
To list the files and folders inside OneLake, always specify a prefix to avoid long processing times:
obstore.list(store, 'tmp').collect()

Uploading Local Files to OneLake
To upload files from a local directory to OneLake, use the following script:
import os
folder_path = '/test' # Change this to the directory containing your files
for root, dirs, files in os.walk(folder_path):
for file in files:
local_path = os.path.join(root, file).replace("\\", "/")
print(f"Uploading: {local_path}")
obstore.put(store, local_path, local_path)


Downloading Files
for downloading files, you use get
xx = obstore.get(store,'plan/plan.png').bytes()
with open('output_file.png', 'wb') as file:
file.write(xx)
Compatibility with Other Storage Solutions
The beauty of this approach is that the code remains largely the same whether you’re using OneLake or an S3-compatible storage service. The main differences lie in updating:
- The storage path
- Authentication credentials
Note: OpenDale provides a similar solution, but it does not currently support Entra OAuth 2
Summary
This short blog outlines a straightforward way to load files into OneLake using Python. With Azure CLI authentication and obstore, managing files in OneLake becomes both simple and specially standardized.
Obviously, it was always possible to do the same using Azure storage SDK but, the API is far from being user friendly (Personal opinion), it is designed for developers, but as a business user I like this package 🙂
Thanks Kyle Barron for creating this package
You can download a sample notebook here :