Option
HeimHeim Skill DevOps und CI/CD azure-storage-file-datalake-py

azure-storage-file-datalake-py

microsoft/skills microsoft/skills

Verwalten Sie Azure Data Lake Storage Gen2 mit dem Python SDK für hierarchische Dateisysteme, Big-Data-Analysen und Datei-/Verzeichnisoperationen.

...Alle erweitern
0
Zeit aktualisiert 16. September 2026

Azure Data Lake Storage Gen2 SDK für Python

Hierarchisches Dateisystem für Big-Data-Analysearbeitslasten.

Installation

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

Umgebungsvariablen

AZURE_STORAGE_ACCOUNT_URL=https://<account>.dfs.core.windows.net  # Erforderlich für alle Authentifizierungsmethoden
AZURE_TOKEN_CREDENTIALS=prod # Nur erforderlich, wenn DefaultAzureCredential in der Produktion verwendet wird
</account>

Authentifizierung & Lebenszyklus

🔑 Auf jedes der folgenden Codebeispiele gelten zwei Regeln:

  1. Bevorzugen Sie DefaultAzureCredential. Es funktioniert lokal (Azure CLI / VS Code / Developer CLI) und in Azure (verwaltete Identität, Workload-Identität) ohne Codeänderung. Vermeiden Sie Verbindungszeichenfolgen und Konten-/API-Schlüssel, da diese die Entra-Überwachung und Rotation umgehen.
    • Lokale Entwicklung: DefaultAzureCredential funktioniert wie angegeben.
    • Produktion: Legen Sie AZURE_TOKEN_CREDENTIALS=prod (oder AZURE_TOKEN_CREDENTIALS=<specific_credential></specific_credential>) fest, um die Anmeldeketten auf produktionssichere Anmeldeinformationen zu beschränken.
  2. Verpacken Sie jeden Client in einen Kontextmanager, um HTTP-Transportschichten, Sockets und Token-Caches deterministisch freizugeben:
    • Synchron: with <client>(...) as client:</client>
    • Asynchron: async with <client>(...) as client:</client> und async with DefaultAzureCredential() as credential: (aus azure.identity.aio)

Codeausschnitte können diese Einrichtung abkürzen, aber Produktionscode sollte stets beide Regeln befolgen.

from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.storage.filedatalake import DataLakeServiceClient

# Lokale Entwicklung: DefaultAzureCredential. Produktion: AZURE_TOKEN_CREDENTIALS=prod oder AZURE_TOKEN_CREDENTIALS=<specific_credential> festlegen
credential = DefaultAzureCredential(require_envvar=True)
# Oder verwenden Sie in der Produktion direkt eine spezifische Anmeldeinformation:
# Siehe https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()
account_url = "https://<account>.dfs.core.windows.net"

with DataLakeServiceClient(account_url=account_url, credential=credential) as service_client:
    # Verwenden Sie service_client hier (siehe folgende Abschnitte für Operationen)
    ...
</account></specific_credential>

Client-Hierarchie

ClientZweck
`DataLakeServiceClient`Vorgänge auf Kontoebene
`FileSystemClient`Vorgänge im Container (Dateisystem)
`DataLakeDirectoryClient`Verzeichnisoperationen
`DataLakeFileClient`Dateioperationen

Dateisystemoperationen

# Dateisystem (Container) erstellen
file_system_client = service_client.create_file_system("myfilesystem")

# Bestehendes abrufen
file_system_client = service_client.get_file_system_client("myfilesystem")

# Löschen
service_client.delete_file_system("myfilesystem")

# Dateisysteme auflisten
for fs in service_client.list_file_systems():
    print(fs.name)

Verzeichnisoperationen

file_system_client = service_client.get_file_system_client("myfilesystem")

# Verzeichnis erstellen
directory_client = file_system_client.create_directory("mydir")

# Verschachtelte Verzeichnisse erstellen
directory_client = file_system_client.create_directory("path/to/nested/dir")

# Verzeichnisclient abrufen
directory_client = file_system_client.get_directory_client("mydir")

# Verzeichnis löschen
directory_client.delete_directory()

# Verzeichnis umbenennen/verschieben
directory_client.rename_directory(new_name="myfilesystem/newname")

Dateioperationen

Datei hochladen

# Datei-Client abrufen
file_client = file_system_client.get_file_client("path/to/file.txt")

# Von lokaler Datei hochladen
with open("local-file.txt", "rb") as data:
    file_client.upload_data(data, overwrite=True)

# Bytes hochladen
file_client.upload_data(b"Hello, Data Lake!", overwrite=True)

# Daten anhängen (für große Dateien)
file_client.append_data(data=b"chunk1", offset=0, length=6)
file_client.append_data(data=b"chunk2", offset=6, length=6)
file_client.flush_data(12)  # Daten festlegen

Datei herunterladen

file_client = file_system_client.get_file_client("path/to/file.txt")

# gesamten Inhalt herunterladen
download = file_client.download_file()
content = download.readall()

# In Datei herunterladen
with open("downloaded.txt", "wb") as f:
    download = file_client.download_file()
    download.readinto(f)

# Bereich herunterladen
download = file_client.download_file(offset=0, length=100)

Datei löschen

file_client.delete_file()

Inhalte auflisten

# Pfade auflisten (Dateien und Verzeichnisse)
for path in file_system_client.get_paths():
    print(f"{'DIR' if path.is_directory else 'FILE'}: {path.name}")

# Pfade im Verzeichnis auflisten
for path in file_system_client.get_paths(path="mydir"):
    print(path.name)

# Rekursive Auflistung
for path in file_system_client.get_paths(path="mydir", recursive=True):
    print(path.name)

Datei-/Verzeichniseigenschaften

# Eigenschaften abrufen
properties = file_client.get_file_properties()
print(f"Größe: {properties.size}")
print(f"Zuletzt geändert: {properties.last_modified}")

# Metadaten festlegen
file_client.set_metadata(metadata={"processed": "true"})

Zugriffssteuerung (ACL)

# ACL abrufen
acl = directory_client.get_access_control()
print(f"Eigentümer: {acl['owner']}")
print(f"Berechtigungen: {acl['permissions']}")

# ACL festlegen
directory_client.set_access_control(
    owner="user-id",
    permissions="rwxr-x---"
)

# ACL-Einträge aktualisieren
from azure.storage.filedatalake import AccessControlChangeResult
directory_client.update_access_control_recursive(
    acl="user:user-id:rwx"
)

Asynchroner Client

from azure.storage.filedatalake.aio import DataLakeServiceClient
from azure.identity.aio import DefaultAzureCredential

async def datalake_operations():
    async with DefaultAzureCredential() as credential:
        async with DataLakeServiceClient(
            account_url="https://<account>.dfs.core.windows.net",
            credential=credential
        ) as service_client:
            file_system_client = service_client.get_file_system_client("myfilesystem")
            file_client = file_system_client.get_file_client("test.txt")

            await file_client.upload_data(b"async content", overwrite=True)

            download = await file_client.download_file()
            content = await download.readall()

import asyncio
asyncio.run(datalake_operations())
</account>

Best Practices

  1. Entscheiden Sie sich für synchron ODER asynchron und bleiben Sie konsistent. Mischen Sie keine synchronen Clients von azure.storage.filedatalake mit asynchronen Clients von azure.storage.filedatalake.aio im selben Aufrufpfad. Wählen Sie einen Modus pro Modul.
  2. Verwenden Sie stets Kontextmanager für Clients und asynchrone Anmeldeinformationen. Verpacken Sie jeden Client in with DataLakeServiceClient(...) as client: (synchron) oder async with DataLakeServiceClient(...) as client: (asynchron). Für asynchrone DefaultAzureCredential aus azure.identity.aio verwenden Sie ebenfalls async with credential:, um Token und Transportschichten ordnungsgemäß aufzuräumen.
  3. Verwenden Sie DefaultAzureCredential für portierbare Authentifizierung über lokale Entwicklung und Azure hinweg (vermeiden Sie nach Möglichkeit Verbindungszeichenfolgen/API-Schlüssel).
  4. Verwenden Sie den hierarchischen Namespace für Dateisystemsemantik.
  5. Verwenden Sie append_data + flush_data für das Hochladen großer Dateien.
  6. Legen Sie ACLs auf Verzeichnisebene fest und erben Sie diese an untergeordnete Elemente.
  7. Verwenden Sie den asynchronen Client für Szenarien mit hohem Durchsatz.
  8. Verwenden Sie get_paths mit recursive=True für vollständige Verzeichnisauflistungen.
  9. Legen Sie Metadaten fest für benutzerdefinierte Dateiattribute.
  10. Erwägen Sie die Blob-API für einfache Objektspeicherszenarien.
Auf GitHub ansehen
---
name: azure-storage-file-datalake-py
description: Manage Azure Data Lake Storage Gen2 with Python SDK for hierarchical file systems, big data analytics, and file/directory operations.
license: MIT
---

# Azure Data Lake Storage Gen2 SDK for Python

Hierarchical file system for big data analytics workloads.

## Installation

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

## Environment Variables

```bash
AZURE_STORAGE_ACCOUNT_URL=https://<account>.dfs.core.windows.net  # Required for all auth methods
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
```

## Authentication & Lifecycle

> **🔑 Two rules apply to every code sample below:**
>
> 1. **Prefer `DefaultAzureCredential`.** It works locally (Azure CLI / VS Code / Developer CLI) and in Azure (managed identity, workload identity) with no code change. Avoid connection strings, account/API keys — they bypass Entra audit and rotation.
>    - Local dev: `DefaultAzureCredential` works as-is.
>    - Production: set `AZURE_TOKEN_CREDENTIALS=prod` (or `AZURE_TOKEN_CREDENTIALS=<specific_credential>`) to constrain the credential chain to production-safe credentials.
> 2. **Wrap every client in a context manager** so HTTP transports, sockets, and token caches are released deterministically:
>    - Sync: `with <Client>(...) as client:`
>    - Async: `async with <Client>(...) as client:` **and** `async with DefaultAzureCredential() as credential:` (from `azure.identity.aio`)
>
> Snippets may abbreviate this setup, but production code should always follow both rules.

```python
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.storage.filedatalake import DataLakeServiceClient

# Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
credential = DefaultAzureCredential(require_envvar=True)
# Or use a specific credential directly in production:
# See https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()
account_url = "https://<account>.dfs.core.windows.net"

with DataLakeServiceClient(account_url=account_url, credential=credential) as service_client:
    # Use service_client here (see following sections for operations)
    ...
```

## Client Hierarchy

| Client | Purpose |
|--------|---------|
| `DataLakeServiceClient` | Account-level operations |
| `FileSystemClient` | Container (file system) operations |
| `DataLakeDirectoryClient` | Directory operations |
| `DataLakeFileClient` | File operations |

## File System Operations

```python
# Create file system (container)
file_system_client = service_client.create_file_system("myfilesystem")

# Get existing
file_system_client = service_client.get_file_system_client("myfilesystem")

# Delete
service_client.delete_file_system("myfilesystem")

# List file systems
for fs in service_client.list_file_systems():
    print(fs.name)
```

## Directory Operations

```python
file_system_client = service_client.get_file_system_client("myfilesystem")

# Create directory
directory_client = file_system_client.create_directory("mydir")

# Create nested directories
directory_client = file_system_client.create_directory("path/to/nested/dir")

# Get directory client
directory_client = file_system_client.get_directory_client("mydir")

# Delete directory
directory_client.delete_directory()

# Rename/move directory
directory_client.rename_directory(new_name="myfilesystem/newname")
```

## File Operations

### Upload File

```python
# Get file client
file_client = file_system_client.get_file_client("path/to/file.txt")

# Upload from local file
with open("local-file.txt", "rb") as data:
    file_client.upload_data(data, overwrite=True)

# Upload bytes
file_client.upload_data(b"Hello, Data Lake!", overwrite=True)

# Append data (for large files)
file_client.append_data(data=b"chunk1", offset=0, length=6)
file_client.append_data(data=b"chunk2", offset=6, length=6)
file_client.flush_data(12)  # Commit the data
```

### Download File

```python
file_client = file_system_client.get_file_client("path/to/file.txt")

# Download all content
download = file_client.download_file()
content = download.readall()

# Download to file
with open("downloaded.txt", "wb") as f:
    download = file_client.download_file()
    download.readinto(f)

# Download range
download = file_client.download_file(offset=0, length=100)
```

### Delete File

```python
file_client.delete_file()
```

## List Contents

```python
# List paths (files and directories)
for path in file_system_client.get_paths():
    print(f"{'DIR' if path.is_directory else 'FILE'}: {path.name}")

# List paths in directory
for path in file_system_client.get_paths(path="mydir"):
    print(path.name)

# Recursive listing
for path in file_system_client.get_paths(path="mydir", recursive=True):
    print(path.name)
```

## File/Directory Properties

```python
# Get properties
properties = file_client.get_file_properties()
print(f"Size: {properties.size}")
print(f"Last modified: {properties.last_modified}")

# Set metadata
file_client.set_metadata(metadata={"processed": "true"})
```

## Access Control (ACL)

```python
# Get ACL
acl = directory_client.get_access_control()
print(f"Owner: {acl['owner']}")
print(f"Permissions: {acl['permissions']}")

# Set ACL
directory_client.set_access_control(
    owner="user-id",
    permissions="rwxr-x---"
)

# Update ACL entries
from azure.storage.filedatalake import AccessControlChangeResult
directory_client.update_access_control_recursive(
    acl="user:user-id:rwx"
)
```

## Async Client

```python
from azure.storage.filedatalake.aio import DataLakeServiceClient
from azure.identity.aio import DefaultAzureCredential

async def datalake_operations():
    async with DefaultAzureCredential() as credential:
        async with DataLakeServiceClient(
            account_url="https://<account>.dfs.core.windows.net",
            credential=credential
        ) as service_client:
            file_system_client = service_client.get_file_system_client("myfilesystem")
            file_client = file_system_client.get_file_client("test.txt")
            
            await file_client.upload_data(b"async content", overwrite=True)
            
            download = await file_client.download_file()
            content = await download.readall()

import asyncio
asyncio.run(datalake_operations())
```

## Best Practices

1. **Pick sync OR async and stay consistent.** Do not mix `azure.storage.filedatalake` sync clients with `azure.storage.filedatalake.aio` async clients in the same call path. Choose one mode per module.
2. **Always use context managers for clients and async credentials.** Wrap every client in `with DataLakeServiceClient(...) as client:` (sync) or `async with DataLakeServiceClient(...) as client:` (async). For async `DefaultAzureCredential` from `azure.identity.aio`, also use `async with credential:` so tokens and transports are cleaned up.
3. **Use `DefaultAzureCredential`** for portable auth across local dev and Azure (avoid connection strings / API keys when possible).
4. **Use hierarchical namespace** for file system semantics
5. **Use `append_data` + `flush_data`** for large file uploads
6. **Set ACLs at directory level** and inherit to children
7. **Use async client** for high-throughput scenarios
8. **Use `get_paths` with `recursive=True`** for full directory listing
9. **Set metadata** for custom file attributes
10. **Consider Blob API** for simple object storage use cases

Alle Dateien

1 Dateien

azure-storage-file-datalake-py installieren

Laden Sie die Skill-Dateien herunter und extrahieren Sie diese in Ihr .claude/skills/-Verzeichnis.

ZIP herunterladen

Klonen Sie das Repository und kopieren Sie die Skill-Dateien in Ihr Projekt.

git clone https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-python/skills/azure-storage-file-datalake-py # Copy SKILL.md to your .claude/skills/ directory

Kopieren Kopieren
Schnelle Einrichtung: Kopieren Sie den Ordner „Skill“ nach .claude/skills/. Claude erkennt und verwendet den Skill automatisch.
Repository microsoft/skills

Ähnliche Skills

base44-cli
Zeit aktualisiert 29. Juni 2026
klingai-upgrade-migration
Zeit aktualisiert 3. Juli 2026
Railway CLI Management
Zeit aktualisiert 2. Juli 2026
Verification &amp; Quality Assurance
Zeit aktualisiert 29. Juni 2026
OR