Χρήση της Python για τη διαχείριση αρχείων και φακέλων στο Microsoft OneLake
Αυτό το άρθρο εξηγεί πώς μπορείτε να χρησιμοποιήσετε το Python SDK υπηρεσίας αποθήκευσης Azure για τη διαχείριση αρχείων και καταλόγων στο OneLake. Αυτή η αναλυτική παρουσίαση καλύπτει το ίδιο περιεχόμενο με τη Χρήση Python για τη διαχείριση καταλόγων και αρχείων στο ADLS Gen2 και επισημαίνει τις διαφορές κατά τη σύνδεση στο OneLake.
Προαπαιτούμενα στοιχεία
Πριν ξεκινήσετε το έργο σας, βεβαιωθείτε ότι έχετε τις ακόλουθες προϋποθέσεις:
- Ένας χώρος εργασίας στον μισθωτή σας Fabric με δικαιώματα Συμβάλλοντα.
- Ένα λιμνοθάσπιτο στον χώρο εργασίας. Προαιρετικά, πρέπει να έχετε προφορτώσει τα δεδομένα για ανάγνωση με χρήση της Python.
Ρύθμιση του έργου σας
Από τον κατάλογο του έργου σας, εγκαταστήστε πακέτα για τις βιβλιοθήκες προγράμματος-πελάτη Azure Data Lake Storage και Azure Identity. Το OneLake υποστηρίζει τα ίδια SDK με το Azure Data Lake Storage (ADLS) Gen2 και υποστηρίζει τον έλεγχο ταυτότητας Microsoft Entra, ο οποίος παρέχεται από το πακέτο azure-identity.
pip install azure-storage-file-datalake azure-identity
Στη συνέχεια, προσθέστε τις απαραίτητες προτάσεις εισαγωγής στο αρχείο κώδικα:
import os
from azure.storage.filedatalake import (
DataLakeServiceClient,
DataLakeDirectoryClient,
FileSystemClient
)
from azure.identity import DefaultAzureCredential
Εξουσιοδότηση πρόσβασης στο OneLake
Το παρακάτω παράδειγμα δημιουργεί ένα πρόγραμμα-πελάτη υπηρεσίας που είναι συνδεδεμένο με το OneLake, το οποίο μπορείτε να χρησιμοποιήσετε για να δημιουργήσετε προγράμματα-πελάτες συστήματος αρχείων για άλλες λειτουργίες. Για τον έλεγχο ταυτότητας στο OneLake, αυτό το παράδειγμα χρησιμοποιεί το DefaultAzureCredential για τον αυτόματο εντοπισμό διαπιστευτηρίων και τη λήψη του σωστού διακριτικού ελέγχου ταυτότητας. Οι συνήθεις μέθοδοι παροχής διαπιστευτηρίων για το Azure SDK περιλαμβάνουν τη χρήση της εντολής "az login" στη διασύνδεση γραμμής εντολών azure ή το cmdlet "Connect-AzAccount" από το 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
Για να μάθετε περισσότερα σχετικά με τη χρήση του DefaultAzureCredential για την εξουσιοδότηση πρόσβασης στα δεδομένα, ανατρέξτε στο θέμα Επισκόπηση: Έλεγχος ταυτότητας εφαρμογών Python στο Azure με χρήση του Azure SDK.
Εργασία με καταλόγους
Για να εργαστείτε με έναν κατάλογο στο OneLake, δημιουργήστε ένα πρόγραμμα-πελάτη συστήματος αρχείων και ένα πρόγραμμα-πελάτη καταλόγου. Μπορείτε να χρησιμοποιήσετε αυτό το πρόγραμμα-πελάτη καταλόγου για να εκτελέσετε διάφορες λειτουργίες, όπως μετονομασία, μετακίνηση ή παράθεση διαδρομών (όπως φαίνεται στο παρακάτω παράδειγμα). Μπορείτε επίσης να δημιουργήσετε ένα πρόγραμμα-πελάτη καταλόγου κατά τη δημιουργία ενός καταλόγου, χρησιμοποιώντας τη μέθοδο 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')
Αποστολή αρχείου
Μπορείτε να αποστείλετε περιεχόμενο σε ένα νέο ή υπάρχον αρχείο χρησιμοποιώντας τη μέθοδο 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)
Δείγμα
Το ακόλουθο δείγμα κώδικα παραθέτει τα περιεχόμενα καταλόγου οποιουδήποτε φακέλου στο 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()
Για να εκτελέσετε αυτό το δείγμα, αποθηκεύστε τον προηγούμενο κώδικα σε ένα αρχείο listOneLakeDirectory.py
και εκτελέστε την ακόλουθη εντολή στον ίδιο κατάλογο. Θυμηθείτε να αντικαταστήσετε τον χώρο εργασίας και τη διαδρομή με τις δικές σας τιμές στο παράδειγμα.
python listOneLakeDirectory.py