Partager via


Exemples de code Partage de fichiers Azure utilisant des bibliothèques de client Python version 2

Cet article présente des exemples de code qui utilisent la version 2 de la bibliothèque de client Partage de fichiers Azure pour Python.

Le 31 mars 2023, nous avons mis fin à la prise en charge des bibliothèques de Kit de développement logiciel (SDK) Azure qui ne respectent pas les instructions actuelles concernant le SDK Azure. Les nouvelles bibliothèques du Kit de développement logiciel (SDK) Azure sont régulièrement mises à jour pour offrir des expériences cohérentes et renforcer votre posture de sécurité. Nous vous recommandons une transition vers les nouvelles bibliothèques du Kit de développement logiciel Azure pour profiter des nouvelles fonctionnalités et des correctifs de sécurité.

Bien que les anciennes bibliothèques puissent toujours être utilisées au-delà du 31 mars 2023, elles ne seront plus prises en charge officiellement et mises à jour par Microsoft. Pour plus d’informations, consultez l’annonce concernant l’arrêt de la prise en charge.

Prérequis

Installez le package suivant à l’aide de pip install :

pip install azure-storage-file

Ajoutez l'instruction import suivante :

from azure.storage.file import FileService

Créer un partage de fichiers Azure

Article connexe : Développer pour Azure Files avec Python

L’exemple de code suivant utilise un objet FileService pour créer le partage s’il n’existe pas.

file_service.create_share('myshare')

Créer un répertoire

Article connexe : Développer pour Azure Files avec Python

Vous pouvez organiser le stockage en plaçant des fichiers dans des sous-répertoires, plutôt que de tous les mettre dans le répertoire racine.

Le code ci-dessous crée un sous-répertoire nommé sampledir sous le répertoire racine.

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

Charger un fichier

Article connexe : Développer pour Azure Files avec Python

Dans cette section, vous apprendrez comment charger un fichier à partir du stockage local vers des Fichiers Azure.

Un partage de fichiers Azure contient au minimum un répertoire racine dans lequel se trouvent les fichiers. Pour créer un fichier et charger des données, utilisez l’une des méthodes suivantes :

Ces méthodes effectuent la segmentation nécessaire lorsque la taille des données est supérieure à 64 Mio.

create_file_from_path charge le contenu d’un fichier à partir du chemin spécifié, et create_file_from_stream charge le contenu à partir d’un flux/fichier déjà ouvert. create_file_from_bytes charge un tableau d’octets, et create_file_from_text charge la valeur texte spécifiée à l’aide de l’encodage spécifié (par défaut UTF-8).

L’exemple suivant charge le contenu du fichier sunset.png dans le fichier myfile.

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

Énumérer des fichiers et répertoires dans un partage de fichiers Azure

Article connexe : Développer pour Azure Files avec Python

Pour lister les fichiers et répertoires d’un partage, utilisez la méthode list_directories_and_files. Cette méthode retourne un générateur. Le code suivant sort le nom de chaque fichier et répertoire d'un partage sur la console.

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

Télécharger un fichier

Article connexe : Développer pour Azure Files avec Python

Pour télécharger des données à partir d’un fichier, utilisez l’une des méthodes suivantes :

Ces méthodes effectuent la segmentation nécessaire lorsque la taille des données est supérieure à 64 Mio.

L’exemple suivant illustre l’utilisation de get_file_to_path pour télécharger le contenu du fichier myfile et le stocker dans le fichier out-sunset.png.

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

Créer un instantané de partage

Article connexe : Développer pour Azure Files avec Python

Vous pouvez créer une copie à un point dans le temps de la totalité de votre partage de fichier.

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

Créer un instantané de partage avec des métadonnées

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

Répertorier les partages et les instantanés

Article connexe : Développer pour Azure Files avec Python

Vous pouvez répertorier tous les instantanés pour un partage particulier.

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

Parcourir un instantané de partage

Article connexe : Développer pour Azure Files avec Python

Vous pouvez parcourir chaque instantané de partage pour récupérer les fichiers et les répertoires du point dans le temps correspondant.

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

Récupérer un fichier d’un instantané de partage

Article connexe : Développer pour Azure Files avec Python

Vous pouvez télécharger un fichier à partir d’un instantané de partage, pour pouvoir restaurer une version précédente d’un fichier.

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

Supprimer un instantané de partage spécifique

Article connexe : Développer pour Azure Files avec Python

Vous pouvez supprimer un instantané de partage spécifique.

file_service.delete_share(share_name, snapshot=snapshot_id)

Supprimer un fichier

Article connexe : Développer pour Azure Files avec Python

Pour supprimer un fichier, appelez delete_file.

L’exemple de code suivant montre comment supprimer un fichier :

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

Supprimer un partage quand existent des instantanés de partage

Article connexe : Développer pour Azure Files avec Python

Pour supprimer un partage qui a des instantanés, vous devez d’abord supprimer la totalité de ces derniers.

L’exemple de code suivant montre comment supprimer un partage :

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