Microsoft OneLake'te dosya ve klasörleri yönetmek için Python kullanma
Bu makalede, OneLake'te dosyaları ve dizinleri yönetmek için Azure Depolama Python SDK'sını nasıl kullanabileceğiniz gösterilmektedir. Bu kılavuz, ADLS 2. Nesil'deki dizinleri ve dosyaları yönetmek için Python kullanma ile aynı içeriği kapsar ve OneLake'e bağlanırken farkları vurgular.
Önkoşullar
Projenize başlamadan önce aşağıdaki önkoşullara sahip olduğunuzdan emin olun:
- Doku kiracınızda Katkıda Bulunan izinlerine sahip bir çalışma alanı.
- Çalışma alanında bir göl evi. İsteğe bağlı olarak, Python kullanarak okumak için verilerin önceden yüklenmesini sağlayın.
Projenizi ayarlama
Proje dizininizden Azure Data Lake Storage ve Azure Identity istemci kitaplıkları için paketleri yükleyin. OneLake, Azure Data Lake Storage (ADLS) 2. Nesil ile aynı SDK'ları destekler ve azure-identity paketi tarafından sağlanan Microsoft Entra kimlik doğrulamasını destekler.
pip install azure-storage-file-datalake azure-identity
Ardından, kod dosyanıza gerekli içeri aktarma deyimlerini ekleyin:
import os
from azure.storage.filedatalake import (
DataLakeServiceClient,
DataLakeDirectoryClient,
FileSystemClient
)
from azure.identity import DefaultAzureCredential
OneLake'e erişimi yetkilendirme
Aşağıdaki örnek, diğer işlemler için dosya sistemi istemcileri oluşturmak için kullanabileceğiniz OneLake'e bağlı bir hizmet istemcisi oluşturur. OneLake'de kimlik doğrulaması yapmak için, bu örnekte kimlik bilgilerini otomatik olarak algılamak ve doğru kimlik doğrulama belirtecini almak için DefaultAzureCredential kullanılır. Azure SDK için kimlik bilgileri sağlamanın yaygın yöntemleri arasında Azure Komut Satırı Arabirimi'ndeki 'az login' komutunu veya Azure PowerShell'den 'Connect-AzAccount' cmdlet'ini kullanmak yer alır.
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
Verilere erişimi yetkilendirmek için DefaultAzureCredential kullanma hakkında daha fazla bilgi edinmek için bkz . Genel Bakış: Azure SDK'yı kullanarak Azure'da Python uygulamalarının kimliğini doğrulama.
Dizinlerle çalışma
OneLake'te bir dizinle çalışmak için bir dosya sistemi istemcisi ve dizin istemcisi oluşturun. Yolları yeniden adlandırma, taşıma veya listeleme gibi çeşitli işlemleri gerçekleştirmek için bu dizin istemcisini kullanabilirsiniz (aşağıdaki örnekte görüldüğü gibi). Ayrıca, FileSystemClient.create_directory yöntemini kullanarak dizin oluştururken bir dizin istemcisi de oluşturabilirsiniz.
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')
Dosyayı karşıya yükleme
DataLakeFileClient.upload_data yöntemini kullanarak içeriği yeni veya mevcut bir dosyaya yükleyebilirsiniz.
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)
Örnek
Aşağıdaki kod örneği, OneLake'teki herhangi bir klasörün dizin içeriğini listeler.
#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()
Bu örneği çalıştırmak için, önceki kodu bir dosyaya listOneLakeDirectory.py
kaydedin ve aynı dizinde aşağıdaki komutu çalıştırın. Çalışma alanını ve yolu örnekteki kendi değerlerinizle değiştirmeyi unutmayın.
python listOneLakeDirectory.py