Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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:
- create_file_from_path
- criar_arquivo_a_partir_de_fluxo
- criar_arquivo_a_partir_de_bytes
- create_file_from_text
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)