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)