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)