Compartilhar via


Exemplos de código do compartilhamento de arquivo do Azure usando bibliotecas de clientes Python versão 2

Este artigo mostra exemplos de código que usam a versão 2 da biblioteca de clientes do compartilhamento de arquivo do Azure para Python.

Em 31 de março de 2023, descontinuamos o suporte para bibliotecas de 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 gerar experiências consistentes e fortalecer sua postura de segurança. É recomendável que você faça 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, confira o anúncio de desativação do suporte.

Pré-requisitos

Instale o seguinte pacote usando pip install:

pip install azure-storage-file

Adicione a instrução import a seguir:

from azure.storage.file import FileService

Criar um compartilhamento de arquivo do Azure

Artigo relatado: Desenvolvimento para os Arquivos do Azure com Python

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

file_service.create_share('myshare')

Criar um diretório

Artigo relatado: Desenvolvimento para os Arquivos do Azure com Python

Também é possível organizar o armazenamento colocando arquivos em subdiretórios em vez de manter todos eles no diretório raiz.

O código abaixo irá criar um subdiretório chamado sampledir sob o diretório raiz.

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

Fazer upload de um arquivo

Artigo relatado: Desenvolvimento para os Arquivos do Azure com Python

Nesta seção, você vai aprender a carregar um arquivo do armazenamento local para os Arquivos do Azure.

Um compartilhamento de arquivo do Azure contém, no mínimo, um diretório raiz onde você pode armazenar os arquivos. Para criar um arquivo e carregar dados, use qualquer um dos seguintes métodos:

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

create_file_from_path carrega o conteúdo de um arquivo 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 do texto especificado usando a codificação especificada (padronizada para 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 relatado: Desenvolvimento para os Arquivos do Azure com Python

Use o método list_directories_and_files para listar os arquivos e diretórios em um compartilhamento. Esse método retorna um gerador. O código a seguir produz 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)

Baixar um arquivo

Artigo relatado: Desenvolvimento para os Arquivos do Azure com Python

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

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

O exemplo a seguir demonstra como usar 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 compartilhamento

Artigo relatado: Desenvolvimento para os Arquivos do Azure com Python

Você pode criar uma cópia de ponto no tempo do seu compartilhamento de arquivo inteiro.

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 relatado: Desenvolvimento para os Arquivos do Azure com Python

Você pode listar todos os instantâneos para um determinado compartilhamento.

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

Procurar instantâneo de compartilhamento

Artigo relatado: Desenvolvimento para os 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 de instantâneo de compartilhamento

Artigo relatado: Desenvolvimento para os 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 relatado: Desenvolvimento para os Arquivos do Azure com Python

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

file_service.delete_share(share_name, snapshot=snapshot_id)

Excluir um arquivo

Artigo relatado: Desenvolvimento para os Arquivos do Azure com Python

Use delete_file para excluir um arquivo.

O exemplo a seguir mostra como excluir um arquivo:

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

Excluir compartilhamento quando existem instantâneos de compartilhamento

Artigo relatado: Desenvolvimento para os 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 a seguir mostra como excluir um compartilhamento:

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