Leitores como você ajudam a apoiar o MUO. Quando você faz uma compra usando links em nosso site, podemos ganhar uma comissão de afiliado. Consulte Mais informação.

A compactação é uma maneira elegante de compactar vários arquivos e combiná-los em um único. Isso economiza não apenas espaço de armazenamento, mas também largura de banda ao transferir um arquivo pela rede. Uma das melhores características do zip é que ele funciona em todas as principais plataformas: Windows, Linux e Mac.

O Zip usa compactação sem perdas para reter todos os dados ao comprimi-los e descompactá-los. Você também pode criptografar e descriptografar seus arquivos zip.

Com tantos recursos para explorar, descubra como você pode ler, compactar e descompactar arquivos usando o módulo zipfile do Python.

O que é o módulo zipfile?

Você pode usar o módulo zipfile padrão para manipular arquivos zip usando Python. Com este módulo, você pode abrir e ler arquivos zip, ler seus metadados, criar um arquivo zip, compactá-lo e descompactá-lo. Existem três métodos de compactação disponíveis: Deflate, Bzip2 e LZMA.

Uma das coisas que falta ao módulo é a capacidade de lidar com arquivos de vários discos, mas ele lida com a extensão ZIP64. Ele também pode descriptografar arquivos zip, mas não criptografá-los. Usando o módulo zipfile, você pode obter os metadados do arquivo zip, como a data e a hora da modificação. Você também pode obter detalhes como o sistema operacional usado para criar o arquivo, a versão do zip e o tamanho do arquivo no formato compactado e não compactado.

Como compactar arquivos usando Python

Você pode compactar vários arquivos em um arquivo usando o módulo zipfile do Python. Importar o ZipFile módulo do arquivo zip pacote para executar as operações zip necessárias. Importar também o os módulo para selecionar e salvar arquivos.

Definir uma função get_all_file_paths(). Ele deve aceitar um parâmetro de diretório que contenha o caminho para a pasta que contém os arquivos a compactar.

Inicialize uma lista vazia que armazenará a lista de caminhos de arquivo. Use um loop for para obter o conteúdo completo do diretório de destino usando o os.walk() função. Esta função busca os nomes de arquivos em uma árvore de diretórios movendo-se ao longo dela em uma abordagem de cima para baixo ou de baixo para cima. Para cada diretório, a função retorna uma tupla tripla contendo raiz, diretórios e arquivos.

A raiz é uma string que contém o caminho completo para o diretório. A lista de diretórios inclui todos os subdiretórios contidos no diretório. A lista de arquivos contém todos os arquivos presentes no diretório.

Dentro do loop, declare outro loop para iterar sobre a lista de arquivos. Use o os.path.join() função para combinar o nome do diretório com cada nome de arquivo para criar um caminho completo. Em seguida, anexe este nome de arquivo completo à lista que você criou anteriormente. Quando esta operação terminar, retorne a lista de caminhos de arquivo.

# importe os módulos necessários
de arquivo zip importar ZipFile
importar os

# crie uma função para obter todos os caminhos de arquivo
defget_all_file_paths(diretório):
# inicializando lista vazia para armazenar caminhos de arquivo
caminhos_de_arquivo = []

# navegue pelos arquivos
pararaiz, diretórios, arquivosemos.andar(diretório):
para nome de arquivo em arquivos:
# junte a raiz e o nome do arquivo para criar um caminho de arquivo completo
filepath = os.path.join (raiz, nome do arquivo)
caminhos_de_arquivo.acrescentar(caminho de arquivo)

# retornando todos os caminhos de arquivo
retornar caminhos_de_arquivo

Armazene o caminho para a pasta que contém os arquivos que você deseja compactar em uma variável chamada diretório. Chame a função, get_all_file_paths() que você criou anteriormente e armazene o valor que ele retorna em caminhos_de_arquivo.

Exiba uma mensagem ao usuário para que ele saiba que esses são os arquivos que o programa compactará. Iterar sobre os arquivos e exibir seus nomes.

Passe o nome que deseja que seu arquivo zip tenha junto com a especificação de que o programa retorna um arquivo gravável usando a instrução with para tratar exceções. Itere sobre cada arquivo e use a função write() sobre o arquivo gravável para um arquivo zip.

Quando a operação estiver concluída, emita uma mensagem explicando que o programa compactado todos os arquivos com sucesso.

# caminho para a pasta que você deseja compactar
diretório = './pythonzip'

# função de chamada para obter todos os caminhos de arquivo no diretório
file_paths = get_all_file_paths (diretório)

# imprimindo a lista de todos os arquivos que você deseja compactar
imprimir('Lista de arquivos que serão compactados:')

para file_name em file_paths:
imprimir(nome do arquivo)

# gravando arquivos em um arquivo zip
com ZipArquivo('meu_arquivo.zip', 'c') como fecho eclair:
# escreve cada arquivo um por um
para arquivo em file_paths:
fecho eclair.escrever(arquivo)

imprimir('Todos os arquivos estão compactados!')

Como descompactar arquivos usando Python

A implementação da descompactação de arquivos usando o módulo zipfile é muito mais fácil. Importar o arquivo zip pacote do ZipFile module e armazene o nome do arquivo zip que você deseja extrair em uma variável. Use a instrução with para lidar com exceções e abra o arquivo que deseja extrair no modo de leitura. Use o printdir() função para exibir o índice dos arquivos presentes no zip.

Exiba uma mensagem de progresso informando que você está extraindo os arquivos e use o extrair tudo() função para extrair o conteúdo do arquivo zip para o diretório de trabalho atual. Alternativamente, você pode incluir um parâmetro de caminho para alterar o caminho onde o programa extrai os arquivos.

Exibir uma mensagem usando o imprimir declaração sobre a conclusão da operação.

# importando os módulos necessários
de arquivo zip importar ZipFile

# passe o nome do arquivo zip que deseja extrair
file_name = "extract.zip"

# abrindo o arquivo zip no modo de leitura
com ZipFile (nome_do_arquivo, 'r') como fecho eclair:
# exibe o conteúdo do arquivo zip
fecho eclair.printdir()

# extraindo todos os arquivos
imprimir('Extração em andamento...')
fecho eclair.extrair tudo()
imprimir('Todos os arquivos foram extraídos!')

Mais sobre arquivos zip

Os arquivos zip ganharam muita popularidade e estão em uso há décadas. Sites populares como GitHub e Google Drive permitem que você baixe uma coleção de arquivos como um arquivo zip. O programa zip compacta um conjunto de arquivos em um único pacote. Isso contrasta com uma ferramenta como o tar, que agrupa arquivos, mas não os compacta.

Se você deseja criptografar seus arquivos usando um algoritmo mais eficiente, os arquivos RAR são o caminho a seguir. O RAR usa o algoritmo AES-128 que é melhor do que o algoritmo deflate usado por arquivos zip. Por fim, escolha aquele que melhor atende a sua necessidade.