Python ZipFile: Como Compactar e Descompactar Arquivos Com Python

Python ZipFile é uma biblioteca que podemos utilizar para compactar e descompactar arquivos com a linguagem Python.
Ou seja, em um processo de automação de tarefa é muito comum usar a biblioteca ZipFile.
Portanto, recomendo ler esse artigo até o fim para entender exatamente como funciona. Vamos lá?
Confira neste artigo:
Compactando Arquivos
Primeiramente, devemos saber que existem duas formas de compactar arquivos com Python usando as bibliotecas:
Ambas as bibliotecas são ótimas opções para compactar arquivos.
Usando ZipFile
Vamos começar utilizando a biblioteca Python ZipFile, para isso criei o código abaixo para exemplificar.
import zipfile
z = zipfile.ZipFile('final.zip', 'w', zipfile.ZIP_DEFLATED)z.write('file1.txt')z.write('file2.txt')z.close()O terceiro argumento do construtor ZipFile é referente ao algoritmo de compressão.
Ou seja, são suportados os métodos abaixo:
ZIP_STORED = 0ZIP_DEFLATED = 8ZIP_BZIP2 = 12ZIP_LZMA = 14Logo depois chamamos o write() para inserir o arquivo que será compactado.
E assim que finalizar precisamos chamar o close(). Depois disso o arquivo .zip será criado.
Usando Shutil
A segunda forma de compactar arquivo usando Python é utilizando a biblioteca Shutil.
Vou deixar aqui um exemplo de utilização para compactar um único arquivo.
import shutil
shutil.make_archive('final', 'zip', './', 'file.txt')Portanto, para criar um arquivo .zip a partir de um diretório, utilize o exemplo abaixo.
import shutil
shutil.make_archive('final', 'zip', './', 'data')Lista de parâmetros:
- Nome do arquivo sem a extensão.
- extensão do arquivo.
- Diretório onde será gravado o arquivo.
- Arquivo ou diretório que será compactado.
Leia também: Os 7 Melhores Livros Para Aprender Python Sozinho
Descompactando Arquivos
Depois de aprender a compactar arquivos, agora vamos aprender a descompactar arquivos com Python.
Porém, existem formas diferentes de se descompactar um arquivo, para isso vou separar por tópicos.
Extrair Tudo
Para extrair todo o conteúdo de um arquivo compactado utilizamos a função extractall() conforme exemplo abaixo:
from zipfile import ZipFile
z = ZipFile('FILE.zip', 'r')z.extractall()z.close()Ou seja, esse script é bem simples de entender, ele basicamente extrai todos o conteúdo que está dentro do arquivo FILE.zip no diretório atual.
Porém, quando queremos especificar o diretório de saída, devemos informar o diretório na função. Exemplo:
z.extract('output')Ou seja, ele irá extrair todo o conteúdo no diretório de saída informado.
Extrair Um Único Arquivo
Se você quiser fazer a extração seletiva, pode usar a função extract() para extrair um único arquivo.
z.extract('data/US.txt')Neste exemplo ele irá extrair o arquivo us.txt no diretório data dentro do pacote zip para o diretório atual.
Além disso, você pode especificar o diretório de saída, use path= para definir o diretório de saída.
Extrair Arquivo Com Senha
Para extrair um arquivo .zip que contem senha de descompactação, podemos utilizar o parâmetro pwd= na chamada das funções:
- extract()
- extractall()
z.extractall(pwd='SECRET2020')Além disso, também é possível usar o método setpassword()
z.setpassword('SECRET2019')Extrair Arquivos .tar
Arquivos .tar também é um formato de compactação muito comum.
Porém, você precisará usar o pacote tarfile, que é muito semelhante ao pacote zipfile.
Exemplo de utilização:
import tarfile
t = tarfile.open("FILE.tar.gz")t.extractall()Extrair Arquivos .rar
Assim como os arquivos .tar, temos também arquivos .rar que são bastante populares.
Para isso você precisará utilizar o pacote rarfile.
Porém, o pacote não é fornecido pela distribuição oficial do Python, o autor tentou fazer com que as interfaces fossem as mesmas do arquivo zip possível.
Exemplo de utilização:
import rarfile
r = rarfile.RarFile('FILE.rar')r.extractall()r.close()Além disso também podemos extrair arquivos com senha utilizando o parâmetro pwd=
r.extract('FILE', pwd='SECRET2019')
r.extractall(pwd='SECRET2019')Porém nem tudo são flores, para utilizar esse pacote do rarflie, será necessário instalar o executável unrar e configurar o módulo rarfile.
rarfile.UNRAR_TOOL = "unrar"Extrair Vários Formatos de Compressão
Por fim, temos um pacote chamado pyunpack que pode extrair diversos formatos como 7-Zip, ACE, BZip2 etc.
Esse pacote pode ajudar bastante, porém pode ser necessário instalar mais utilizários para usar o pyunpack.
Recomendo dar uma conferida na documentação e seguir o guia de instalação desse pacote.
Exemplo de uso:
from pyunpack import Archive
Archive('FILE.zip').extractall('OUTPUT_DIR')Ou seja, o arquivo de entrada pode ser qualquer formato compatível com zipfile e patool.
Conclusão: Python ZipFile
Em conclusão, neste artigo vimos diversas formas de compactar e descompactar arquivos usando o Python ZipFile.
Clique no botão abaixo para acessar mais de 1400 cursos completos e com certificado válido.Invista em você e conquiste uma excelente carreira profissional na área da tecnologia.
Enfim, espero que você tenha gostado do conteúdo.
Muito obrigado pela audiência e lhe desejo muito sucesso!!




