Jaa


Microsoft OneLaken tiedostojen ja kansioiden hallinta Pythonilla

Tässä artikkelissa kerrotaan, miten voit hallita tiedostoja ja hakemistoja OneLakessa Azure-tallennus Python SDK:n avulla. Näissä vaiheittaisissa ohjeissa käsitellään samaa sisältöä kuin Pythonin avulla hallitaan hakemistoja ja tiedostoja ADLS Gen2 :ssa, ja niissä korostuvat erot, kun muodostat yhteyden OneLakeen.

Edellytykset

Ennen kuin aloitat projektisi, varmista, että sinulla on seuraavat edellytykset:

  • Fabric-vuokraajan työtila, jolla on Osallistuja-käyttöoikeudet.
  • Tämä on työtilan Lakehouse. Vaihtoehtoisesti voit määrittää, että tiedot on esilatattu luettavaksi Pythonin avulla.

Määritä projektisi

Asenna projektihakemistosta Azure Data Lake Tallennus- ja Azure Identity -asiakaskirjastojen paketit. OneLake tukee samoja SDK:ita kuin Azure Data Lake Tallennus (ADLS) Gen2 ja tukee Microsoft Entra -todennusta, joka on azure-identity-paketin tarjoama.

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

Lisää seuraavaksi tarvittavat tuontilausekkeet kooditiedostoosi:

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

OneLaken käyttöoikeuden myöntäminen

Seuraavassa esimerkissä luodaan OneLakeen yhdistetty palveluasiakas, jonka avulla voit luoda tiedostojärjestelmäasiakkaita muihin toimintoihin. OneLake-todennuksessa tässä esimerkissä tunnistetiedot tunnistetiedot tunnistetietojen tunnistamiseen käytetään DefaultAzureCredential-kohdetta ja oikean todennustunnuksen hankkimista. Yleisiä tapoja antaa Azure SDK:n tunnistetiedot ovat az login -komennon käyttö Azuren komentoriviliittymässä tai Näyttöyhteys-AzAccount-cmdlet-komento Azure PowerShellissä.

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

Lisätietoja tietojen käyttöoikeuksien myöntämisestä DefaultAzureCredential-asetuksen avulla on artikkelissa Yleiskatsaus: Python-sovellusten todentaminen Azureen Azure SDK:n avulla.

Hakemistojen käsitteleminen

Jos haluat käsitellä hakemistoa OneLakessa, luo tiedostojärjestelmäasiakas ja -hakemistoasiakas. Tämän hakemistoasiakkaan avulla voit suorittaa erilaisia toimintoja, kuten nimetä uudelleen, siirtää tai listata polkuja (kuten seuraavassa esimerkissä). Voit luoda hakemistoasiakkaan myös luodessasi hakemistoa FileSystemClient.create_directory-menetelmää käyttämällä.

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

Tiedoston lataaminen

Voit ladata sisältöä uuteen tai olemassa olevaan tiedostoon käyttämällä DataLakeFileClient.upload_data-menetelmää .

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)

Näyte

Seuraavassa koodiesimerkissä luetellaan minkä tahansa OneLaken kansion hakemiston sisältö.

#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()

Jos haluat suorittaa tämän mallin, tallenna edellinen koodi tiedostoon listOneLakeDirectory.py ja suorita seuraava komento samassa hakemistossa. Muista korvata työtila ja polku esimerkissä omilla arvoillasi.

python listOneLakeDirectory.py