Del via


Brug Python til at administrere filer og mapper i Microsoft OneLake

I denne artikel kan du se, hvordan du kan bruge Azure Storage Python SDK til at administrere filer og mapper i OneLake. Denne gennemgang dækker det samme indhold som Brug Python til at administrere mapper og filer i ADLS Gen2 og fremhæver forskellene, når der oprettes forbindelse til OneLake.

Forudsætninger

Før du starter dit projekt, skal du sørge for, at du har følgende forudsætninger:

  • Et arbejdsområde i din Fabric-lejer med bidragydertilladelser.
  • Et lakehouse i arbejdsområdet. Du kan også få indlæst data, så de kan læses ved hjælp af Python.

Konfigurer dit projekt

Fra din projektmappe skal du installere pakker til Azure Data Lake Storage- og Azure Identity-klientbibliotekerne. OneLake understøtter de samme SDK'er som Azure Data Lake Storage (ADLS) Gen2 og understøtter Microsoft Entra-godkendelse, som leveres af azure-identitetspakken.

pip install azure-storage-file-datalake azure-identity

Føj derefter de nødvendige importsætninger til kodefilen:

import os
from azure.storage.filedatalake import (
    DataLakeServiceClient,
    DataLakeDirectoryClient,
    FileSystemClient
)
from azure.identity import DefaultAzureCredential

Godkend adgang til OneLake

I følgende eksempel oprettes der en tjenesteklient med forbindelse til OneLake, som du kan bruge til at oprette filsystemklienter til andre handlinger. I dette eksempel bruges DefaultAzureCredential til automatisk at registrere legitimationsoplysninger og hente det korrekte godkendelsestoken for at godkende OneLake. Almindelige metoder til angivelse af legitimationsoplysninger til Azure SDK omfatter brug af kommandoen 'az login' i Azure-kommandolinjegrænsefladen eller cmdlet'en 'Connect-AzAccount' fra 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

Hvis du vil vide mere om brug af DefaultAzureCredential til at godkende adgang til data, skal du se Oversigt: Godkend Python-apps til Azure ved hjælp af Azure SDK.

Arbejde med mapper

Hvis du vil arbejde med en mappe i OneLake, skal du oprette en filsystemklient og en mappeklient. Du kan bruge denne katalogklient til at udføre forskellige handlinger, herunder omdøbning, flytning eller visning af stier (som vist i følgende eksempel). Du kan også oprette en katalogklient, når du opretter en mappe, ved hjælp af metoden FileSystemClient.create_directory .

def create_file_system_client(self, service_client: DataLakeServiceClient, file_system_name: str) -> 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 = file_system_client.get_directory_client(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')

Overføre en fil

Du kan uploade indhold til en ny eller eksisterende fil ved hjælp af metoden 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(data, overwrite=True)

Eksempel

I følgende kodeeksempel vises mappeindholdet i alle mapper i 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()

Hvis du vil køre dette eksempel, skal du gemme den foregående kode i en fil listOneLakeDirectory.py og køre følgende kommando i den samme mappe. Husk at erstatte arbejdsområdet og stien med dine egne værdier i eksemplet.

python listOneLakeDirectory.py