Megosztás a következőn keresztül:


Fájlok és mappák kezelése a Python használatával a Microsoft OneLake-ben

Ez a cikk bemutatja, hogyan kezelheti a fájlokat és könyvtárakat az Azure Storage Python SDK-val a OneLake-ben. Ez az útmutató ugyanazokat a tartalmakat ismerteti, mint a Python használata könyvtárak és fájlok kezelésére az ADLS Gen2-ben , és kiemeli a OneLake-hez való csatlakozáskor tapasztalható különbségeket.

Előfeltételek

A projekt megkezdése előtt győződjön meg arról, hogy rendelkezik a következő előfeltételekkel:

  • Egy munkaterület a Fabric-bérlőben közreműködői engedélyekkel.
  • Egy tóház a munkaterületen. Opcionálisan előre betöltött adatokkal is rendelkezhet a Python használatával való olvasáshoz.

A projekt beállítása

A projektkönyvtárból telepítse az Azure Data Lake Storage- és az Azure Identity-ügyfélkódtárak csomagjait. A OneLake ugyanazokat az SDK-kat támogatja, mint az Azure Data Lake Storage (ADLS) Gen2, és támogatja a Microsoft Entra hitelesítést, amelyet az azure-identity csomag biztosít.

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

Ezután adja hozzá a szükséges importálási utasításokat a kódfájlhoz:

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

Hozzáférés engedélyezése a OneLake-hez

Az alábbi példa létrehoz egy, a OneLake-hez csatlakoztatott szolgáltatásügyfélt, amellyel fájlrendszerügyfeleket hozhat létre más műveletekhez. A OneLake-hitelesítéshez ez a példa a DefaultAzureCredential használatával automatikusan észleli a hitelesítő adatokat, és lekérte a megfelelő hitelesítési jogkivonatot. Az Azure SDK hitelesítő adatainak megadásának gyakori módszerei közé tartozik az "az login" parancs használata az Azure parancssori felületén vagy az Azure PowerShell "Connect-AzAccount" parancsmagja.

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

Az adatokhoz való hozzáférés engedélyezéséhez a DefaultAzureCredential használatával kapcsolatos további információkért lásd : Áttekintés: Python-alkalmazások hitelesítése az Azure-ban az Azure SDK használatával.

Címtárak használata

Ha a OneLake-ben szeretne címtárat létrehozni, hozzon létre egy fájlrendszer-ügyfelet és egy címtárügyfélt. Ezzel a címtárügyfélel különféle műveleteket hajthat végre, például átnevezheti, áthelyezheti vagy listázhatja az elérési utakat (az alábbi példában látható módon). Címtár létrehozásakor is létrehozhat címtárügyfélt a FileSystemClient.create_directory metódus használatával.

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

Fájl feltöltése

A DataLakeFileClient.upload_data metódussal tartalmat tölthet fel egy új vagy meglévő fájlba.

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)

Minta

Az alábbi kódminta a OneLake bármely mappájának könyvtártartalmát sorolja fel.

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

A minta futtatásához mentse az előző kódot egy fájlba listOneLakeDirectory.py , és futtassa a következő parancsot ugyanabban a könyvtárban. A példában ne felejtse el lecserélni a munkaterületet és az elérési utat a saját értékeire.

python listOneLakeDirectory.py