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 relacionado: Desenvolver para o Azure Files 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 relacionado: Desenvolver para o Azure Files 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 relacionado: Desenvolver para o Azure Files 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 fragmentação 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 relacionado: Desenvolver para o Azure Files 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 relacionado: Desenvolver para o Azure Files 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 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 uma imagem de compartilhamento

Artigo relacionado: Desenvolver para o Azure Files com Python

Você pode criar uma cópia de determinado momento do seu compartilhamento de arquivos completo.

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 o Azure Files com Python

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

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

Navegar captura de tela de compartilhamento

Artigo relacionado: Desenvolver para o Azure Files com Python

Você pode navegar em cada instantâneo de compartilhamento e recuperar os arquivos e diretórios daquele momento.

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

Obter arquivo do instantâneo de compartilhamento

Artigo relacionado: Desenvolver para o Azure Files com Python

Você pode baixar um arquivo de uma captura 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 o Azure Files com Python

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

file_service.delete_share(share_name, snapshot=snapshot_id)

Excluir um arquivo

Artigo relacionado: Desenvolver para o Azure Files 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 existirem instantâneos do compartilhamento

Artigo relacionado: Desenvolver para o Azure Files 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)