Freigeben über


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 entsprechen. 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 zur Einstellung des Supports.

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-Dateien mit Python

Im folgenden Codebeispiel wird ein FileService-Objekt verwendet, um die Freigabe zu erstellen, wenn sie nicht vorhanden ist.

file_service.create_share('myshare')

Erstellen eines Verzeichnisses

Verwandter Artikel: Entwickeln für Azure-Dateien mit Python

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

Der folgende Code erstellt ein Unterverzeichnis namens sampledir unter dem Stammverzeichnis.

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

Hochladen einer Datei

Verwandter Artikel: Entwickeln für Azure-Dateien 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).

Im folgenden Beispiel wird der Inhalt der sunset.png Datei in die Datei "myfile " hochgeladen.

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

Dateien und Verzeichnisse in einer Azure-Dateifreigabe auflisten

Verwandter Artikel: Entwickeln für Azure-Dateien mit Python

Verwenden Sie zum Auflisten der Dateien und Verzeichnisse in einer Freigabe die list_directories_and_files-Methode. Diese Methode gibt einen Generator zurück. Der folgende Code gibt den Namen jeder Datei und jedes Verzeichnisses in einer Freigabe an die 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-Dateien 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.

Im folgenden Beispiel wird veranschaulicht, wie der Inhalt der Datei "myfile" mit get_file_to_path heruntergeladen und in die Datei out-sunset.png gespeichert wird.

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

Eine Momentaufnahme der Freigabe erstellen

Verwandter Artikel: Entwickeln für Azure-Dateien mit Python

Sie können eine Sicherung zu einem bestimmten Zeitpunkt Ihrer gesamten Dateifreigabe erstellen.

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

Erstellen Sie eine Momentaufnahme der Freigabe mit Metadaten

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

Freigaben und Momentaufnahmen auflisten

Verwandter Artikel: Entwickeln für Azure-Dateien mit Python

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

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

Freigabemomentaufnahme durchsuchen

Verwandter Artikel: Entwickeln für Azure-Dateien 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-Dateien mit Python

Sie können eine Datei von einem Freigabesnapshot 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-Dateien mit Python

Sie können einen einzelnen Freigabe-Schnappschuss löschen.

file_service.delete_share(share_name, snapshot=snapshot_id)

Löschen von Dateien

Verwandter Artikel: Entwickeln für Azure-Dateien mit Python

Rufen Sie zum Löschen einer Datei delete_file auf.

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

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

Freigabe löschen, wenn Momentaufnahmen vorhanden sind

Verwandter Artikel: Entwickeln für Azure-Dateien 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)