Pomocou jazyka Python môžete spravovať súbory a priečinky v službe Microsoft OneLake
Tento článok popisuje, ako použiť súpravu SDK jazyka Python služby Azure Storage na správu súborov a adresárov vo OneLake. Tento návod sa vzťahuje na rovnaký obsah ako jazyk Python na spravovanie adresárov a súborov v službe ADLS Gen2 a zvýrazňuje rozdiely pri pripájaní k službe OneLake.
Pred začatím projektu sa uistite, že máte nasledujúce predpoklady:
- Pracovný priestor v nájomníkovi služby Fabric s povoleniami Prispievateľ.
- Domov jazier v pracovnom priestore. Voliteľne máte vopred načítané údaje na čítanie pomocou jazyka Python.
Z adresára projektu nainštalujte balíky pre klientske knižnice Azure Data Lake Storage a Azure Identity. OneLake podporuje rovnaké súpravy SDK ako Azure Data Lake Storage (ADLS) Gen2 a podporuje overovanie Microsoft Entra, ktoré je poskytované balíkom azure-identity.
pip install azure-storage-file-datalake azure-identity
Potom do súboru s kódom pridajte potrebné príkazy importu:
import os
from azure.storage.filedatalake import (
DataLakeServiceClient,
DataLakeDirectoryClient,
FileSystemClient
)
from azure.identity import DefaultAzureCredential
V nasledujúcom príklade sa vytvorí klient služby pripojený k OneLake, ktorý môžete použiť na vytvorenie klientov systému súborov pre iné operácie. Na overenie v službe OneLake sa v tomto príklade používa defaultAzureCredential na automatické zisťovanie poverení a získanie správneho tokenu overenia. Bežné metódy poskytovania poverení pre súpravu Azure SDK zahŕňajú použitie príkazu az login v rozhraní príkazového riadka služby Azure alebo rutiny typu cmdlet Connect-AzAccount zo prostredia Azure PowerShell.
def get_service_client_token_credential(self, account_name) -> DataLakeServiceClient:
account_url = f"https://{account_name}.dfs.fabric.microsoft.com"
token_credential = DefaultAzureCredential()
service_client = DataLakeServiceClient(account_url, credential=token_credential)
return service_client
Ďalšie informácie o povolení prístupu k údajom pomocou vlastnosti DefaultAzureCredential nájdete v téme Prehľad: Overenie aplikácií jazyka Python v službe Azure pomocou súpravy Azure SDK.
Ak chcete pracovať s adresárom vo OneLake, vytvorte klienta systému súborov a klienta adresára. Tohto klienta adresára môžete použiť na vykonávanie rôznych operácií vrátane premenovania, premiestnenia alebo zoznamu ciest (ako je to znázornené v nasledujúcom príklade). Pri vytváraní adresára môžete tiež vytvoriť klienta adresára pomocou metódy FileSystemClient.create_directory .
def create_file_system_client(self, service_client, file_system_name: str) : DataLakeServiceClient) -> FileSystemClient:
file_system_client = service_client.get_file_system_client(file_system = file_system_name)
return file_system_client
def create_directory_client(self, file_system_client : FileSystemClient, path: str) -> DataLakeDirectoryClient: directory_client
directory_client = file_system_client.GetDirectoryClient(path)
return directory_client
def list_directory_contents(self, file_system_client: FileSystemClient, directory_name: str):
paths = file_system_client.get_paths(path=directory_name)
for path in paths:
print(path.name + '\n')
Obsah môžete nahrať do nového alebo existujúceho súboru pomocou metódy DataLakeFileClient.upload_data .
def upload_file_to_directory(self, directory_client: DataLakeDirectoryClient, local_path: str, file_name: str):
file_client = directory_client.get_file_client(file_name)
with open(file=os.path.join(local_path, file_name), mode="rb") as data:
file_client.upload_data(dataW, overwrite=True)
Nasledujúca ukážka kódu uvádza obsah adresára ľubovoľného priečinka vo OneLake.
#Install the correct packages first in the same folder as this file.
#pip install azure-storage-file-datalake azure-identity
from azure.storage.filedatalake import (
DataLakeServiceClient,
DataLakeDirectoryClient,
FileSystemClient
)
from azure.identity import DefaultAzureCredential
# Set your account, workspace, and item path here
ACCOUNT_NAME = "onelake"
WORKSPACE_NAME = "<myWorkspace>"
DATA_PATH = "<myLakehouse>.Lakehouse/Files/<path>"
def main():
#Create a service client using the default Azure credential
account_url = f"https://{ACCOUNT_NAME}.dfs.fabric.microsoft.com"
token_credential = DefaultAzureCredential()
service_client = DataLakeServiceClient(account_url, credential=token_credential)
#Create a file system client for the workspace
file_system_client = service_client.get_file_system_client(WORKSPACE_NAME)
#List a directory within the filesystem
paths = file_system_client.get_paths(path=DATA_PATH)
for path in paths:
print(path.name + '\n')
if __name__ == "__main__":
main()
Ak chcete spustiť túto ukážku, uložte predchádzajúci kód do súboru listOneLakeDirectory.py
a v tom istom adresári spustite nasledujúci príkaz. Nezabudnite nahradiť pracovný priestor a cestu vlastnými hodnotami v príklade.
python listOneLakeDirectory.py