Share via


Codebeispiele für Azure File Share mit Clientbibliotheken für Python, Version 2

Dieser Artikel zeigt Codebeispiele, die Version 2 der Azure File Storage-Clientbibliothek für Python verwenden.

Am 31. März 2023 haben wir die Unterstützung für Azure SDK-Bibliotheken eingestellt, die nicht den aktuellen Azure SDK-Richtlinien entsprachen. Die neuen Azure SDK-Bibliotheken werden regelmäßig aktualisiert, um konsistente Erfahrungen zu ermöglichen und Ihren Sicherheitsstatus zu stärken. Es wird empfohlen, auf die neuen Azure SDK-Bibliotheken umzusteigen, um die neuen Funktionen und wichtigen Sicherheitsupdates zu nutzen.

Obwohl die älteren Bibliotheken noch über den 31. März 2023 hinaus verwendet werden können, erhalten sie keinen offiziellen Support und keine Updates mehr von Microsoft. Weitere Informationen finden Sie in der Ankündigung der Supporteinstellung.

Voraussetzungen

Installieren Sie das folgende Paket mithilfe von pip install:

pip install azure-storage-file

Fügen Sie die folgende import -Anweisung hinzu:

from azure.storage.file import FileService

Erstellen einer Azure-Dateifreigabe

Verwandter Artikel: Entwickeln für Azure Files mit Python

Im folgenden Codebeispiel wird mithilfe eines FileService-Objekts die Freigabe erstellt, wenn sie nicht vorhanden ist.

file_service.create_share('myshare')

Erstellen eines Verzeichnisses

Verwandter Artikel: Entwickeln für Azure Files mit Python

Sie können den Speicher organisieren, indem Sie Dateien in Unterverzeichnissen ablegen, anstatt alle Dateien im Stammverzeichnis zu speichern.

Mit dem folgenden Code wird ein Unterverzeichnis mit dem Namen sampledir im Stammverzeichnis erstellt.

file_service.create_directory('myshare', 'sampledir')

Hochladen einer Datei

Verwandter Artikel: Entwickeln für Azure Files mit Python

In diesem Abschnitt erfahren Sie, wie Sie eine Datei aus dem lokalen Speicher in Azure Files hochladen können.

Eine Azure-Dateifreigabe enthält mindestens ein Stammverzeichnis, in dem Dateien gespeichert werden können. Verwenden Sie eine der folgenden Methoden, um eine Datei zu erstellen und Daten hochzuladen:

Diese Methoden führen das erforderliche Chunking durch, wenn die Größe der Daten 64 MB übersteigt.

create_file_from_path lädt den Inhalt einer Datei aus dem angegebenen Pfad, create_file_from_stream den Inhalt einer Datei aus einer bereits geöffneten Datei/einem bereits geöffneten Stream hoch. create_file_from_bytes lädt ein Byte-Array, create_file_from_text den angegebenen Textwert wie vorgegeben codiert hoch (Standardcodierung ist UTF-8).

Das folgende Beispiel lädt den Inhalt der Datei sunset.png in die Datei myfile hoch.

from azure.storage.file import ContentSettings
file_service.create_file_from_path(
    'myshare',
    None,  # We want to create this file in the root directory, so we specify None for the directory_name
    'myfile',
    'sunset.png',
    content_settings=ContentSettings(content_type='image/png'))

Auflisten von Dateien und Verzeichnissen in einer Azure-Dateifreigabe

Verwandter Artikel: Entwickeln für Azure Files mit Python

Verwenden Sie zum Auflisten der Dateien und Verzeichnisse in einer Freigabe die Methode list_directories_and_files. Diese Methode gibt einen Generator zurück. Der folgende Code gibt den Namen der einzelnen Dateien und Verzeichnisse in einer Freigabe an der Konsole aus.

generator = file_service.list_directories_and_files('myshare')
for file_or_dir in generator:
    print(file_or_dir.name)

Herunterladen einer Datei

Verwandter Artikel: Entwickeln für Azure Files mit Python

Verwenden Sie eine der folgenden Methoden, um Daten aus einer Datei herunterzuladen:

Diese Methoden führen das erforderliche Chunking durch, wenn die Größe der Daten 64 MB übersteigt.

Das folgende Beispiel verwendet get_file_to_path, um den Inhalt der Datei myfile herunterzuladen und in der Datei out-sunset.png zu speichern.

file_service.get_file_to_path('myshare', None, 'myfile', 'out-sunset.png')

Erstellen einer Freigabemomentaufnahme

Verwandter Artikel: Entwickeln für Azure Files mit Python

Sie können eine Zeitpunktkopie Ihrer gesamten Dateifreigabe erstellen.

snapshot = file_service.snapshot_share(share_name)
snapshot_id = snapshot.snapshot

Erstellen einer Freigabemomentaufnahme mit Metadaten

metadata = {"foo": "bar"}
snapshot = file_service.snapshot_share(share_name, metadata=metadata)

Auflisten von Freigaben und Momentaufnahmen

Verwandter Artikel: Entwickeln für Azure Files mit Python

Sie können alle Momentaufnahmen für eine bestimmte Freigabe auflisten.

shares = list(file_service.list_shares(include_snapshots=True))

Durchsuchen einer Freigabemomentaufnahme

Verwandter Artikel: Entwickeln für Azure Files mit Python

Sie können die einzelnen Freigabemomentaufnahmen durchsuchen, um Dateien und Verzeichnisse von diesem Zeitpunkt abzurufen.

directories_and_files = list(
    file_service.list_directories_and_files(share_name, snapshot=snapshot_id))

Abrufen einer Datei aus einer Freigabemomentaufnahme

Verwandter Artikel: Entwickeln für Azure Files mit Python

Sie können eine Datei von einer Freigabemomentaufnahme herunterladen. Auf diese Weise können Sie eine frühere Version einer Datei wiederherstellen.

with open(FILE_PATH, 'wb') as stream:
    file = file_service.get_file_to_stream(
        share_name, directory_name, file_name, stream, snapshot=snapshot_id)

Löschen einer einzelnen Freigabemomentaufnahme

Verwandter Artikel: Entwickeln für Azure Files mit Python

Sie können eine einzelne Freigabemomentaufnahme löschen.

file_service.delete_share(share_name, snapshot=snapshot_id)

Löschen von Dateien

Verwandter Artikel: Entwickeln für Azure Files mit Python

Rufen Sie delete_file auf, um eine Datei zu löschen.

Das folgende Codebeispiel zeigt, wie eine Datei gelöscht wird:

file_service.delete_file('myshare', None, 'myfile')

Löschen einer Freigabe bei vorhandenen Freigabemomentaufnahmen

Verwandter Artikel: Entwickeln für Azure Files mit Python

Eine Freigabe, die Momentaufnahmen enthält, kann erst gelöscht werden, nachdem alle Momentaufnahmen gelöscht wurden.

Das folgende Codebeispiel zeigt, wie eine Freigabe gelöscht wird:

file_service.delete_share(share_name, delete_snapshots=DeleteSnapshot.Include)