Fabric API - Files
onelake_list, onelake_read, onelake_write and onelake_delete, and the two forms a file path takes.
The four methods below read and write files in OneLake, the storage behind every lakehouse, and the Files section in the lakehouse explorer is the folder they work in.
File paths
Every path starts with the lakehouse and continues into it, and the lakehouse can be named in two ways:
| Form | Example |
|---|---|
| Name and type | Operations.Lakehouse/Files/incoming/invoices-2026-08.csv |
| Item ID | 73811955-064d-481a-a7e9-f9c563124f9e/Files/incoming/invoices-2026-08.csv |
Both forms work in every method below. A lakehouse keeps files under Files, and the table methods write to Tables, next to it.
onelake_list
Lists the files and subfolders directly under a path.
| Parameter | Type | Meaning |
|---|---|---|
workspace_id | str | The workspace whose storage to list |
directory | str | The folder to list, e.g. Operations.Lakehouse/Files/incoming, or empty for the top of the workspace |
Returns a dict with paths, a list of dicts each with name (the full path), isDirectory (true or false), contentLength and lastModified.
# -*- coding: utf-8 -*-
# Zato
from zato.server.service import Service
class ListFiles(Service):
def handle(self):
workspace_id = '262ddd3d-3d0d-4495-b80f-6dddda1e23a1'
conn = self.microsoft.fabric['Zato Fabric']
listing = conn.onelake_list(workspace_id, 'Operations.Lakehouse/Files/incoming')
files = []
for path in listing['paths']:
file = {'name': path['name'], 'is_directory': path['isDirectory']}
files.append(file)
self.response.payload = {'files': files}
{"files": [{"name": "Operations.Lakehouse/Files/incoming/invoices-2026-08.csv", "is_directory": false}]}
onelake_read
Returns a file's contents as bytes.
| Parameter | Type | Meaning |
|---|---|---|
workspace_id | str | The workspace the file is in |
file_path | str | The file, in either path form |
# -*- coding: utf-8 -*-
# Zato
from zato.server.service import Service
class ReadFile(Service):
def handle(self):
workspace_id = '262ddd3d-3d0d-4495-b80f-6dddda1e23a1'
file_path = 'Operations.Lakehouse/Files/incoming/invoices-2026-08.csv'
conn = self.microsoft.fabric['Zato Fabric']
data = conn.onelake_read(workspace_id, file_path)
text = data.decode('utf-8')
size = len(data)
lines = text.splitlines()
first_line = lines[0]
self.response.payload = {'size': size, 'first_line': first_line}
onelake_write
Creates a file with these contents, or replaces it if it exists. Missing folders in the path are created.
| Parameter | Type | Meaning |
|---|---|---|
workspace_id | str | The workspace to write to |
file_path | str | The file, in either path form |
data | bytes, str or list of dicts | The contents - bytes go as they are, text is written as UTF-8, a list of dicts becomes CSV with a header made of the first row's keys |
Returns nothing.
# -*- coding: utf-8 -*-
# Zato
from zato.server.service import Service
class WriteFile(Service):
def handle(self):
workspace_id = '262ddd3d-3d0d-4495-b80f-6dddda1e23a1'
file_path = 'Operations.Lakehouse/Files/exports/invoices-2026-08.csv'
conn = self.microsoft.fabric['Zato Fabric']
rows = [
{'location': 'Riverside', 'invoiced': 2895.50},
{'location': 'Oak Hill', 'invoiced': 1840.00},
{'location': 'Maple Grove', 'invoiced': 415.75},
]
conn.onelake_write(workspace_id, file_path, rows)
self.response.payload = {'rows': len(rows)}
onelake_delete
Deletes a file, or a folder with everything in it.
| Parameter | Type | Meaning |
|---|---|---|
workspace_id | str | The workspace the file is in |
file_path | str | The file or folder, in either path form |
recursive | bool | True to delete a folder along with its files and subfolders |
Returns nothing. Deleting a file that does not exist raises an exception, as does deleting a non-empty folder without recursive.
# -*- coding: utf-8 -*-
# Zato
from zato.server.service import Service
class DeleteFile(Service):
def handle(self):
workspace_id = '262ddd3d-3d0d-4495-b80f-6dddda1e23a1'
file_path = 'Operations.Lakehouse/Files/incoming/invoices-2026-08.csv'
conn = self.microsoft.fabric['Zato Fabric']
conn.onelake_delete(workspace_id, file_path)
See also
| Page | What it covers |
|---|---|
| Fabric API - Tables | Importing a written file into a table with load_table |
| Writing data to Fabric | Loading a file into a table and writing a monthly export |
| Fabric API - Connection | The storage token these methods use |