Partilhar via


Desenvolver para arquivos do Azure com Python

Saiba como desenvolver aplicativos Python que usam Arquivos do Azure para armazenar dados. O Azure Files é um serviço de compartilhamento de arquivos gerenciado na nuvem. Ele fornece compartilhamentos de arquivos totalmente gerenciados que podem ser acessados por meio dos protocolos SMB (Server Message Block) e NFS (Network File System) padrão do setor. Os Arquivos do Azure também fornecem uma API REST para acesso programático a compartilhamentos de arquivos.

Neste artigo, você aprenderá sobre as diferentes abordagens para desenvolver com Arquivos do Azure em Python e como escolher a abordagem que melhor se adapta às necessidades do seu aplicativo. Você também aprende a criar um aplicativo de console básico que interage com os recursos do Azure Files.

Aplica-se a

Modelo de gestão Modelo de faturação Nível de média Redundância SMB NFS
Microsoft.Storage Provisionado v2 HDD (padrão) Localização (LRS) Sim Não
Microsoft.Storage Provisionado v2 HDD (padrão) Zona (ZRS) Sim Não
Microsoft.Storage Provisionado v2 HDD (padrão) Geo (GRS) Sim Não
Microsoft.Storage Provisionado v2 HDD (padrão) GeoZona (GZRS) Sim Não
Microsoft.Storage Provisionado versão 1 SSD (de qualidade superior) Localização (LRS) Sim Não
Microsoft.Storage Provisionado versão 1 SSD (de qualidade superior) Zona (ZRS) Sim Não
Microsoft.Storage Pagamento conforme o consumo HDD (padrão) Localização (LRS) Sim Não
Microsoft.Storage Pagamento conforme o consumo HDD (padrão) Zona (ZRS) Sim Não
Microsoft.Storage Pagamento conforme o consumo HDD (padrão) Geo (GRS) Sim Não
Microsoft.Storage Pagamento conforme o consumo HDD (padrão) GeoZona (GZRS) Sim Não

Sobre o desenvolvimento de aplicativos Python com Arquivos do Azure

Os Arquivos do Azure oferecem várias maneiras para os desenvolvedores Python acessarem dados e gerenciarem recursos nos Arquivos do Azure. A tabela a seguir lista as abordagens, resume como elas funcionam e fornece orientação sobre quando usar cada abordagem:

Abordagem Como funciona Quando utilizar
Bibliotecas de E/S de arquivo padrão Usa chamadas de API no nível do sistema operacional por meio de compartilhamentos de arquivos do Azure montados usando SMB ou NFS. Ao montar um compartilhamento de arquivos usando SMB/NFS, você pode usar bibliotecas de E/S de arquivos para uma linguagem de programação ou estrutura, como os e io para Python. Você tem aplicativos de linha de negócios com código existente que usa E/S de arquivo padrão e não deseja reescrever o código para que o aplicativo funcione com um compartilhamento de arquivos do Azure.
FileREST API Chama diretamente endpoints HTTPS para interagir com dados armazenados no Azure Files. Fornece controle programático sobre recursos de compartilhamento de arquivos. O SDK do Azure fornece a biblioteca de cliente de Compartilhamentos de Arquivos (azure-storage-file-share) que se baseia na API FileREST, permitindo que você interaja com operações da API FileREST por meio de paradigmas familiares de linguagem de programação Python. Você está criando aplicativos e serviços de nuvem de valor agregado para clientes e deseja usar recursos avançados não disponíveis por meio de bibliotecas de E/S de arquivos Python.
API REST do provedor de recursos de armazenamento Usa o Azure Resource Manager (ARM) para gerenciar contas de armazenamento e compartilhamentos de arquivos. Chama endereços da API REST para várias operações de gestão de recursos. Seu aplicativo ou serviço precisa executar tarefas de gerenciamento de recursos, como criar, excluir ou atualizar contas de armazenamento ou compartilhamentos de arquivos.

Para obter informações gerais sobre essas abordagens, consulte Visão geral do desenvolvimento de aplicativos com arquivos do Azure.

Este artigo se concentra em trabalhar com recursos do Azure Files usando as seguintes abordagens:

Pré-requisitos

Configure o seu projeto

Esta seção orienta você na preparação de um projeto para trabalhar com os Arquivos do Azure.

A partir do diretório do projeto, instale pacotes com base nas necessidades do seu aplicativo usando o pip install comando. O exemplo a seguir mostra como instalar a biblioteca de cliente de Compartilhamentos de Arquivos do Azure, a biblioteca de cliente de gerenciamento de armazenamento e a biblioteca de Identidade do Azure. O pacote azure-identity é necessário para conexões sem senha com os serviços do Azure.

pip install azure-identity
pip install azure-storage-file-share
pip install azure-mgmt-resource
pip install azure-mgmt-storage

Abra o arquivo de código e adicione as instruções de importação necessárias.

Se você planeja usar o Python os e io bibliotecas, adicione o seguinte ao seu arquivo .py :

import os
import io

Se você planeja usar a biblioteca de cliente de Compartilhamentos de Arquivos de Armazenamento do Azure, adicione o seguinte ao seu arquivo de .py :

from azure.identity import DefaultAzureCredential
from azure.storage.fileshare import ShareClient, ShareDirectoryClient, ShareFileClient

Se você planeja usar as bibliotecas de gerenciamento de Armazenamento do Azure, adicione o seguinte ao seu arquivo de .py :

from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.storage import StorageManagementClient

Trabalhar com arquivos do Azure usando bibliotecas de E/S de arquivos Python

As bibliotecas de E/S de arquivo padrão são a maneira mais comum de acessar e trabalhar com recursos do Azure Files. Quando você monta um compartilhamento de arquivos usando SMB ou NFS, seu sistema operacional redireciona as solicitações de API para o sistema de arquivos local. Essa abordagem permite que você use bibliotecas de E/S de arquivo padrão, como os ou io, para interagir com arquivos e diretórios no compartilhamento.

Considere usar bibliotecas de I/O de ficheiros Python quando a sua aplicação requerer:

  • Compatibilidade de aplicativos: Ideal para aplicativos de linha de negócios com código existente que já usa bibliotecas de E/S de arquivos Python. Você não precisa reescrever o código para que o aplicativo funcione com um compartilhamento de arquivos do Azure.
  • Facilidade de utilização: As bibliotecas de E/S de arquivos Python são bem conhecidas pelos desenvolvedores e fáceis de usar. Uma proposta de valor fundamental dos Arquivos do Azure é que ele expõe APIs nativas do sistema de arquivos por meio de SMB e NFS.

Nesta seção, você aprenderá a usar bibliotecas de E/S de arquivos Python para trabalhar com recursos do Azure Files.

Para obter mais informações e exemplos, consulte os seguintes recursos:

  • Bibliotecas Python para E/S de ficheiros: os e io

Montar um compartilhamento de arquivos

Para usar bibliotecas de E/S de arquivos Python, você deve primeiro montar um compartilhamento de arquivos. Consulte os seguintes recursos para obter orientação sobre como montar um compartilhamento de arquivos usando SMB ou NFS:

Neste artigo, usamos o seguinte caminho para fazer referência a um compartilhamento de arquivos SMB montado no Windows:

file_share_path = "Z:\\file-share"

Exemplo: Conectar-se a um compartilhamento de arquivos e enumerar diretórios usando bibliotecas de E/S de arquivos Python

O exemplo de código a seguir mostra como se conectar a um compartilhamento de arquivos e listar os diretórios no compartilhamento:

import os

def enumerate_directories(path):
    try:
        # Get all directories in the specified path
        dirs = [d for d in os.listdir(path) if os.path.isdir(os.path.join(path, d))]
        
        # Print each directory name
        for dir_name in dirs:
            print(f"{dir_name}")
            
        print(f"{len(dirs)} directories found.")
    except (PermissionError, FileNotFoundError, OSError) as ex:
        print(f"Error: {ex}")

#Example usage
file_share_path = "Z:\\file-share"
enumerate_directories(file_share_path)

Exemplo: Gravar em um arquivo em um compartilhamento de arquivos usando bibliotecas de E/S de arquivos Python

O exemplo de código a seguir mostra como escrever e acrescentar texto a um arquivo:

import os

def write_to_file(file_share_path, file_name):
    # First line of text with platform-appropriate line ending
    text_to_write = "First line" + os.linesep
    
    # Combine the file share path and filename
    file_path = os.path.join(file_share_path, file_name)
    
    # Write initial text to file (overwrites if file exists)
    with open(file_path, 'w') as file:
        file.write(text_to_write)
    
    # Text to append
    text_to_append = ["Second line", "Third line"]
    
    # Append lines to the file
    with open(file_path, 'a') as file:
        file.write(os.linesep.join(text_to_append) + os.linesep)

# Example usage
file_share_path = "Z:\\file-share"
write_to_file(file_share_path, "test.txt")

Exemplo: enumerar ACLs de arquivo usando bibliotecas de E/S de arquivo Python

O exemplo de código a seguir mostra como enumerar listas de controle de acesso básico (ACLs) para um arquivo:

import os
import stat

def enumerate_file_acls(file_path):
    try:
        # Get file stats
        file_stat = os.stat(file_path)
        
        # Get permissions in octal format
        permissions_octal = oct(stat.S_IMODE(file_stat.st_mode))
        
        print(f"File: {file_path}")
        print(f"Permissions (octal): {permissions_octal}")
        
        # Interpret permissions in a human-readable format
        permissions = ""
        permissions += "r" if file_stat.st_mode & stat.S_IRUSR else "-"
        permissions += "w" if file_stat.st_mode & stat.S_IWUSR else "-"
        permissions += "x" if file_stat.st_mode & stat.S_IXUSR else "-"
        permissions += "r" if file_stat.st_mode & stat.S_IRGRP else "-"
        permissions += "w" if file_stat.st_mode & stat.S_IWGRP else "-" 
        permissions += "x" if file_stat.st_mode & stat.S_IXGRP else "-"
        permissions += "r" if file_stat.st_mode & stat.S_IROTH else "-"
        permissions += "w" if file_stat.st_mode & stat.S_IWOTH else "-"
        permissions += "x" if file_stat.st_mode & stat.S_IXOTH else "-"
        
        print(f"Permissions (symbolic): {permissions}")
        
        print(f"Owner ID: {file_stat.st_uid}")
        print(f"Group ID: {file_stat.st_gid}")
        print("Note: For detailed Windows ACLs, you may need a specialized library.")
        
    except FileNotFoundError:
        print(f"Error: File '{file_path}' not found.")
    except PermissionError:
        print(f"Error: Permission denied for '{file_path}'.")
    except Exception as e:
        print(f"Error: {e}")

# Example usage
file_share_path = "Z:\\file-share"
file_name = "test.txt"
file_path = os.path.join(file_share_path, file_name)

enumerate_file_acls(file_path)

Trabalhar com dados de Arquivos do Azure usando a biblioteca de cliente de Compartilhamentos de Arquivos para Python

A API FileREST fornece acesso programático aos Arquivos do Azure. Permite ao utilizador aceder aos endpoints HTTPS para realizar operações em partilhas de ficheiros, diretórios e ficheiros. A API FileREST foi projetada para alta escalabilidade e recursos avançados que podem não estar disponíveis por meio de protocolos nativos. O SDK do Azure fornece bibliotecas de cliente, como a biblioteca de cliente de Compartilhamentos de Arquivos para Python, que se baseiam na API FileREST.

Considere usar a API FileREST e a biblioteca de cliente de compartilhamento de arquivos se seu aplicativo exigir:

  • Funcionalidades avançadas: Aceda a operações e funcionalidades que não estão disponíveis através de protocolos nativos.
  • Integrações personalizadas na nuvem: Crie serviços personalizados de valor agregado, como backup, antivírus ou gerenciamento de dados, que interagem diretamente com os Arquivos do Azure.
  • Otimização de desempenho: Beneficie-se das vantagens de desempenho em cenários de alta escala usando operações de plano de dados.

A API FileREST modela os Arquivos do Azure como uma hierarquia de recursos e é recomendada para operações executadas no nível de diretório ou arquivo . Você deve preferir a API REST do provedor de recursos de armazenamento para operações executadas no nível de serviço de arquivo ou compartilhamento de arquivos .

Nesta seção, você aprenderá a usar a biblioteca de cliente de Compartilhamentos de Arquivos para trabalhar com recursos de Arquivos do Azure.

Para obter mais informações e exemplos, consulte os seguintes recursos:

Autorizar o acesso e criar um cliente

Para conectar um aplicativo aos Arquivos do Azure, crie um ShareClient objeto. Este objeto é o seu ponto de partida para trabalhar com recursos do Azure Files. Os exemplos de código a seguir mostram como criar um ShareClient objeto usando diferentes mecanismos de autorização.

Para autorizar com o Microsoft Entra ID, é necessário usar uma entidade de segurança. O tipo de entidade de segurança de que precisas depende de onde a tua aplicação é executada. Use esta tabela como um guia.

Onde o aplicativo é executado Principal de segurança Orientações
Máquina local (desenvolvimento e testes) Entidade de serviço Para saber como registrar o aplicativo, configurar um grupo do Microsoft Entra, atribuir funções e configurar variáveis de ambiente, consulte Autorizar acesso usando entidades de serviço de desenvolvedor
Máquina local (desenvolvimento e testes) Identidade do utilizador Para saber como configurar um grupo do Microsoft Entra, atribuir funções e entrar no Azure, consulte Autorizar acesso usando credenciais de desenvolvedor
Hospedado no Azure Identidade gerenciada Para saber como habilitar a identidade gerenciada e atribuir funções, consulte Autorizar acesso de aplicativos hospedados no Azure usando uma identidade gerenciada
Hospedado fora do Azure (por exemplo, aplicativos locais) Entidade de serviço Para saber como registar a aplicação, atribuir funções e configurar variáveis de ambiente, consulte Autorizar acesso de aplicações locais usando um principal de serviço de aplicação

Para trabalhar com os exemplos de código neste artigo, atribua a função predefinida do RBAC do Azure Contribuidor Privilegiado de Dados do Arquivo de Armazenamento à entidade de segurança. Essa função fornece acesso completo de leitura, escrita, modificação de ACLs e eliminação a todos os dados nas partilhas para todas as contas de armazenamento configuradas, independentemente das permissões NTFS definidas ao nível de ficheiro/diretório. Para obter mais informações, consulte Aceder a partilhas de ficheiros do Azure utilizando a ID do Microsoft Entra com o OAuth do Azure Files sobre REST.

Autorizar o acesso usando DefaultAzureCredential

Uma maneira fácil e segura de autorizar o acesso e conectar-se ao Azure Files é obter um token OAuth criando uma instância DefaultAzureCredential. Em seguida, você pode usar essa credencial para criar um ShareClient objeto.

O exemplo a seguir cria um ShareClient objeto autorizado usando DefaultAzureCredential, e, em seguida, cria um ShareDirectoryClient objeto para trabalhar com um diretório na partilha.

from azure.identity import DefaultAzureCredential
from azure.storage.fileshare import ShareClient

account_name = "<account-name>"
share_name = "<share-name>"

# Create the share client using DefaultAzureCredential
share_client = ShareClient(
    account_url=f"https://{account_name}.file.core.windows.net",
    share_name=share_name,
    credential=DefaultAzureCredential(),
    # When using a token credential, you MUST specify a token_intent
    token_intent='backup'
)

# Get a reference to a directory in the share
directory_client = share_client.get_directory_client("sample-directory")

Se você souber exatamente qual tipo de credencial usa para autenticar usuários, poderá obter um token OAuth usando outras classes na biblioteca de cliente do Azure Identity para Python. Essas classes derivam da classe TokenCredential .

Para saber mais sobre cada um desses mecanismos de autorização, consulte Escolher como autorizar o acesso aos dados do arquivo.

Exemplo: Copiar arquivos usando a biblioteca de cliente de compartilhamentos de arquivos

Você pode copiar arquivos dentro de um compartilhamento de arquivos ou entre compartilhamentos de arquivos usando o seguinte método:

Você pode copiar um arquivo para um blob de destino usando o seguinte método de um BlobClient objeto:

O exemplo de código a seguir mostra como copiar um arquivo para um arquivo em outro compartilhamento de arquivos:

from azure.identity import DefaultAzureCredential
from azure.storage.fileshare import ShareFileClient

# Define storage account parameters
account_name = "<account-name>"
src_share_name = "src-file-share"
dest_share_name = "dest-file-share"
src_file_path = "src/path/to/file"
dest_file_path = "dest/path/to/file"

# Create token credential
token_credential = DefaultAzureCredential()

# Create source file client
src_file_client = ShareFileClient(
    account_url=f"https://{account_name}.file.core.windows.net",
    share_name=src_share_name,
    file_path=src_file_path,
    credential=token_credential,
    token_intent='backup'
)

# Create destination file client
dest_file_client = ShareFileClient(
    account_url=f"https://{account_name}.file.core.windows.net",
    share_name=dest_share_name,
    file_path=dest_file_path,
    credential=token_credential,
    token_intent='backup'
)

# Copy the file from the source share to the destination share
copy_operation = dest_file_client.start_copy_from_url(src_file_client.url)

Exemplo: Conceder um arquivo usando a biblioteca de cliente de Compartilhamentos de Arquivos

Uma concessão cria um bloqueio em um arquivo gerenciado pelo Azure por meio de uma ID de concessão. A concessão fornece um mecanismo para coordenar o acesso a arquivos em vários clientes em um sistema distribuído. Um arrendamento sobre um arquivo fornece acesso exclusivo de gravação e exclusão. Para saber mais sobre estados e ações de concessão, consulte Arquivo de concessão.

O exemplo de código a seguir mostra como criar um cliente de concessão, adquirir uma concessão de duração infinita em um arquivo e liberar a concessão:

from azure.identity import DefaultAzureCredential
from azure.storage.fileshare import ShareFileClient, ShareLeaseClient

# Define storage account parameters
account_name = "<account-name>"
share_name = "sample-file-share"
file_path = "path/to/file"

# Create a DefaultAzureCredential for authentication
token_credential = DefaultAzureCredential()

# Create a ShareFileClient
file_client = ShareFileClient(
    account_url=f"https://{account_name}.file.core.windows.net",
    share_name=share_name,
    file_path=file_path,
    credential=token_credential,
    token_intent='backup'
)

# Get a lease client for the file
lease_client = ShareLeaseClient(file_client)

# Acquire an infinite duration lease on the file
lease_info = lease_client.acquire()

# Do something with the file while it's leased
# ...

# Release the lease
lease_client.release()

Ao usar o SMB e a API FileREST, lembre-se de que a API FileREST usa concessões para gerenciar bloqueios de arquivos, enquanto o SMB usa bloqueios do sistema de arquivos gerenciados pelo sistema operacional. Para saber mais sobre como gerenciar interações de bloqueio de arquivos entre o SMB e a API FileREST, consulte Gerenciar bloqueios de arquivos.

Exemplo: Criar e listar instantâneos de compartilhamento usando a biblioteca de cliente de Compartilhamentos de Arquivos

Os instantâneos de partilha são cópias só de leitura de uma partilha de ficheiros num determinado ponto no tempo. Você pode criar um instantâneo de um compartilhamento de arquivos e, em seguida, usá-lo para acessar os dados no compartilhamento no momento em que o instantâneo foi criado. Você também pode listar todos os instantâneos em uma partilha de ficheiros e excluir instantâneos da partilha.

O exemplo de código a seguir mostra como criar um instantâneo de compartilhamento, listar os instantâneos em um compartilhamento de arquivos e percorrer o diretório raiz em um instantâneo de compartilhamento:

from azure.storage.fileshare import ShareServiceClient, ShareDirectoryClient

def list_root_directory_snapshot(root_dir: ShareDirectoryClient):
    for item in root_dir.list_directories_and_files():
        if item["is_directory"]:
            print(f"Directory in snapshot: {item['name']}")
        else:
            print(f"File in snapshot: {item['name']}")

# Connection string with account key (required for share snapshots)
connection_string = "<connection-string>"

# Create service and share clients
share_service_client = ShareServiceClient.from_connection_string(connection_string)
share_name = "sample-file-share"
share_client = share_service_client.get_share_client(share_name)

# Create a snapshot
snapshot_info = share_client.create_snapshot()
print(f"Snapshot created: {snapshot_info['snapshot']}")

# List snapshots in a share
for share_item in share_service_client.list_shares(include_snapshots=True):
    if share_item["snapshot"]:
        print(f"Share: {share_item['name']} (Snapshot: {share_item['snapshot']})")

# List directories and files in a share snapshot
snapshot_timestamp = snapshot_info["snapshot"]
share_snapshot = share_service_client.get_share_client(share_name, snapshot=snapshot_timestamp)
root_dir = share_snapshot.get_directory_client("")

list_root_directory_snapshot(root_dir)

Observação

Os tokens OAuth, como os obtidos ao usar DefaultAzureCredential, não são permitidos para operações de plano de dados ao nível de partilha de ficheiros. Para trabalhar com instantâneos de compartilhamento, o objeto cliente deve ser autorizado usando a chave de conta. O ShareClient objeto criado neste exemplo de código usa uma cadeia de conexão, que inclui a chave de conta.

O armazenamento de chaves de conta ou cadeias de conexão representa um risco de segurança. Você só deve usá-los quando a autenticação do Microsoft Entra não estiver disponível. Para saber mais sobre como armazenar chaves de conta com segurança no Cofre de Chaves do Azure, consulte Sobre chaves de conta de armazenamento gerenciado do Cofre de Chaves do Azure.

Gerir recursos do Azure Files usando as bibliotecas de gestão do Azure Storage

As bibliotecas de gerenciamento de Armazenamento do Azure são criadas na API REST do provedor de recursos de Armazenamento do Azure. O provedor de recursos do Armazenamento do Azure é um serviço baseado no Gerenciador de Recursos do Azure e dá suporte aos métodos declarativo (modelos) e imperativo (chamada direta de API). A API REST do provedor de recursos do Armazenamento do Azure fornece acesso programático aos recursos do Armazenamento do Azure, incluindo compartilhamentos de arquivos. O SDK do Azure fornece bibliotecas de gerenciamento que se baseiam na API REST do provedor de recursos de Armazenamento do Azure.

As bibliotecas de gerenciamento são recomendadas para operações executadas no nível de serviço oucompartilhamento de arquivos . Nesta seção, você aprenderá a usar as bibliotecas de gerenciamento do Armazenamento do Azure para gerenciar recursos do Azure Files.

Exemplo: Criar um compartilhamento de arquivos usando a biblioteca de gerenciamento de Armazenamento do Azure

O exemplo de código a seguir mostra como criar um objeto de nível ArmClient superior, registrar o provedor de recursos de armazenamento com uma assinatura e criar um compartilhamento de arquivos usando a biblioteca de gerenciamento de armazenamento do Azure:

from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient, SubscriptionClient
from azure.mgmt.storage import StorageManagementClient
from azure.mgmt.storage.models import FileShare

# Create the credential for authentication
credential = DefaultAzureCredential()

# Define variables
subscription_id = "<subscription-id>"
resource_group_name = "<resource-group-name>"
storage_account_name = "<storage-account-name>"
share_name = "sample-file-share"

# Create clients
resource_client = ResourceManagementClient(credential, subscription_id)
subscription_client = SubscriptionClient(credential)
storage_client = StorageManagementClient(credential, subscription_id)

# Register Microsoft.Storage resource provider, if not already registered
provider = resource_client.providers.get('Microsoft.Storage')
if provider.registration_state == "NotRegistered":
    resource_client.providers.register('Microsoft.Storage')

# Create a file share
file_share = storage_client.file_shares.create(
    resource_group_name=resource_group_name,
    account_name=storage_account_name,
    share_name=share_name,
    file_share=FileShare(
        share_quota=1  # Share size in GiB
        # Add other file share properties here
    )
)

Você pode configurar as propriedades de compartilhamento de arquivos usando a FileShare classe. O exemplo anterior mostra como definir a share_quota propriedade. Para saber mais, consulte a referência da classe StorageManagementClient .

Observação

Para executar a operação de registro, você precisa de permissões para a seguinte ação do RBAC do Azure: Microsoft.Storage/register/action. Essa permissão está incluída nas funções incorporadas de colaborador e proprietário.

Exemplo: Listar partilhas de ficheiros e instantâneos usando a biblioteca de gestão de armazenamento do Azure

O exemplo de código a seguir mostra como listar compartilhamentos de arquivos e instantâneos em uma conta de armazenamento:

from azure.identity import DefaultAzureCredential
from azure.mgmt.storage import StorageManagementClient

# Create the credential for authentication
credential = DefaultAzureCredential()

# Define variables
subscription_id = "<subscription-id>"
resource_group_name = "<resource-group-name>"
storage_account_name = "<storage-account-name>"
expand = "snapshots"  # Include snapshots in the response

# Create storage management client
storage_client = StorageManagementClient(credential, subscription_id)

# List all file shares with their snapshots
file_shares = storage_client.file_shares.list(
    resource_group_name=resource_group_name,
    account_name=storage_account_name,
    expand=expand
)

# Iterate over the file shares and print them along with any snapshots
for share in file_shares:
    print(f"Resource name: {share.name}")
    if share.snapshot_time:
        print(f"Snapshot: {share.snapshot_time}")

Para obter mais informações sobre como desenvolver com o Azure Files, consulte os seguintes recursos: