Zdieľať cez


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.

Požiadavky

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.

Nastavenie projektu

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

Autorizácia prístupu k službe OneLake

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.

Práca s adresármi

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')

Nahratie súboru

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)

a marketingu

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