Partilhar via


Exemplos de código de Compartilhamento de Arquivos do Azure usando bibliotecas de cliente Python versão 2

Este artigo mostra exemplos de código que usam a versão 2 da biblioteca de cliente do Compartilhamento de Arquivos do Azure para Python.

Em 31 de março de 2023, desativamos o suporte para bibliotecas do SDK do Azure que não estão em conformidade com as diretrizes atuais do SDK do Azure. As novas bibliotecas do SDK do Azure são atualizadas regularmente para promover experiências consistentes e fortalecer a sua postura de segurança. É recomendável fazer a transição para as novas bibliotecas do SDK do Azure para aproveitar os novos recursos e as atualizações críticas de segurança.

Embora as bibliotecas mais antigas ainda possam ser usadas após 31 de março de 2023, elas não receberão mais suporte e atualizações oficiais da Microsoft. Para obter mais informações, consulte o anúncio de aposentadoria de suporte.

Pré-requisitos

Instale o seguinte pacote usando pip install:

pip install azure-storage-file

Adicione a seguinte import instrução:

from azure.storage.file import FileService

Criar uma partilha de ficheiros do Azure

Artigo relacionado: Desenvolver para arquivos do Azure com Python

O exemplo de código a seguir usa um objeto FileService para criar o compartilhamento se ele não existir.

file_service.create_share('myshare')

Criar um diretório

Artigo relacionado: Desenvolver para arquivos do Azure com Python

Você pode organizar o armazenamento colocando arquivos dentro de subdiretórios em vez de ter todos eles no diretório raiz.

O código abaixo criará um subdiretório chamado sampledir no diretório raiz.

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

Carregar um ficheiro

Artigo relacionado: Desenvolver para arquivos do Azure com Python

Nesta seção, você aprenderá como carregar um arquivo do armazenamento local no Azure Files.

Um compartilhamento de arquivos do Azure contém, pelo menos, um diretório raiz onde os arquivos podem residir. Para criar um arquivo e carregar dados, use qualquer um dos seguintes métodos:

Esses métodos executam a fragmentação necessária quando o tamanho dos dados excede 64 MiB.

create_file_from_path Carrega o conteúdo de um arquivo a partir do caminho especificado e create_file_from_stream carrega o conteúdo de um arquivo/fluxo já aberto. create_file_from_bytes carrega uma matriz de bytes e create_file_from_text carrega o valor de texto especificado usando a codificação especificada (padrão UTF-8).

O exemplo a seguir carrega o conteúdo do arquivo sunset.png no arquivo 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'))

Enumerar arquivos e diretórios em um compartilhamento de arquivos do Azure

Artigo relacionado: Desenvolver para arquivos do Azure com Python

Para listar os arquivos e diretórios em um compartilhamento, use o método list_directories_and_files . Este método devolve um gerador. O código a seguir gera o nome de cada arquivo e diretório em um compartilhamento para o console.

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

Transferir um ficheiro

Artigo relacionado: Desenvolver para arquivos do Azure com Python

Para baixar dados de um arquivo, use qualquer um dos seguintes métodos:

Esses métodos executam a fragmentação necessária quando o tamanho dos dados excede 64 MiB.

O exemplo a seguir demonstra o uso get_file_to_path para baixar o conteúdo do arquivo myfile e armazená-lo no arquivo out-sunset.png .

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

Criar um instantâneo de partilha

Artigo relacionado: Desenvolver para arquivos do Azure com Python

Você pode criar uma cópia point-in-time de todo o compartilhamento de arquivos.

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

Criar instantâneo de compartilhamento com metadados

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

Listar compartilhamentos e instantâneos

Artigo relacionado: Desenvolver para arquivos do Azure com Python

Você pode listar todos os instantâneos de um compartilhamento específico.

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

Procurar instantâneo de compartilhamento

Artigo relacionado: Desenvolver para arquivos do Azure com Python

Você pode navegar em cada instantâneo de compartilhamento para recuperar arquivos e diretórios a partir desse momento.

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

Obter arquivo do compartilhamento instantâneo

Artigo relacionado: Desenvolver para arquivos do Azure com Python

Você pode baixar um arquivo de um instantâneo de compartilhamento. Isso permite que você restaure uma versão anterior de um arquivo.

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

Excluir um único instantâneo de compartilhamento

Artigo relacionado: Desenvolver para arquivos do Azure com Python

Você pode excluir um único instantâneo de compartilhamento.

file_service.delete_share(share_name, snapshot=snapshot_id)

Eliminar um ficheiro

Artigo relacionado: Desenvolver para arquivos do Azure com Python

Para excluir um arquivo, chame delete_file.

O exemplo de código a seguir mostra como excluir um arquivo:

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

Excluir compartilhamento quando houver instantâneos de compartilhamento

Artigo relacionado: Desenvolver para arquivos do Azure com Python

Um compartilhamento que contém instantâneos não pode ser excluído, a menos que todos os instantâneos sejam excluídos primeiro.

O exemplo de código a seguir mostra como excluir um compartilhamento:

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