Python: Como Compactar e Extrair Arquivos .zip e .tar.gz sem Instalar Bibliotecas
Python: Como Compactar e Extrair Arquivos .zip e .tar.gz sem Instalar Bibliotecas
A compressão e extração de arquivos são operações essenciais para rotinas de backup, empacotamento de relatórios e transferência de dados. A linguagem Python traz nativamente em sua biblioteca padrão os módulos
zipfile e tarfile, permitindo manipular arquivos .zip, .tar e .tar.gz sem a necessidade de instalar pacotes terceiros via pip.1. Manipulação de Arquivos .zip (Módulo zipfile)
Ideal para compactar arquivos individuais, pastas inteiras e extrair dados em sistemas Windows, Linux e macOS.
Python
import os
import zipfile
# 1. Compactar uma pasta inteira em .zip
def compactar_zip(pasta_origem, arquivo_zip_saida):
with zipfile.ZipFile(arquivo_zip_saida, 'w', zipfile.ZIP_DEFLATED) as zipf:
for raiz, _, arquivos in os.walk(pasta_origem):
for arquivo in arquivos:
caminho_completo = os.path.join(raiz, arquivo)
# Mantém a estrutura de pastas relativa
caminho_relativo = os.path.relpath(caminho_completo, pasta_origem)
zipf.write(caminho_completo, arcname=caminho_relativo)
print(f"✅ Arquivo ZIP criado: {arquivo_zip_saida}")
# 2. Descompactar / Extrair arquivo .zip
def extrair_zip(arquivo_zip, pasta_destino):
with zipfile.ZipFile(arquivo_zip, 'r') as zipf:
zipf.extractall(pasta_destino)
print(f"📦 Conteúdo extraído com sucesso em: {pasta_destino}")
# Exemplo de uso:
compactar_zip("./meus_documentos", "backup_docs.zip")
extrair_zip("backup_docs.zip", "./pasta_extraida")
Pontos-chave:
zipfile.ZIP_DEFLATED: Ativa a compressão real do arquivo (se omitido, o arquivo apenas agrupa os itens sem reduzir o tamanho).os.path.relpath(...): Evita que o arquivo.zipgrave todo o caminho absoluto do sistema operacional (ex:C:/Users/Usuario/...), salvando apenas a estrutura de pastas interna.zipf.extractall(...): Extrai automaticamente todos os arquivos salvos dentro do ZIP para o diretório de destino fornecido.
2. Manipulação de Arquivos .tar.gz (Módulo tarfile)
Muito utilizado em ambientes Linux e servidores para criar tarballs compactados de alta eficiência.
Python
import tarfile
# 1. Compactar uma pasta em .tar.gz
def compactar_targz(pasta_origem, arquivo_targz_saida):
# O modo 'w:gz' especifica escrita com compressão Gzip
with tarfile.open(arquivo_targz_saida, "w:gz") as tar:
tar.add(pasta_origem, arcname=os.path.basename(pasta_origem))
print(f"✅ Arquivo TAR.GZ criado: {arquivo_targz_saida}")
# 2. Descompactar / Extrair arquivo .tar.gz
def extrair_targz(arquivo_targz, pasta_destino):
# O modo 'r:gz' especifica leitura de arquivo Gzip
with tarfile.open(arquivo_targz, "r:gz") as tar:
tar.extractall(path=pasta_destino)
print(f"📦 Conteúdo do TAR.GZ extraído em: {pasta_destino}")
# Exemplo de uso:
compactar_targz("./meus_logs", "logs_servidor.tar.gz")
extrair_targz("logs_servidor.tar.gz", "./logs_extraidos")
Pontos-chave:
w:gz/r:gz: O sufixo:gzindica a utilização do algoritmo Gzip para compressão/descompressão.tar.add(..., arcname=...): Garante que o diretório seja adicionado de forma limpa ao pacote sem incluir a árvore de diretórios pai do sistema local.tarfile.open(...): Funciona nativamente com gerenciadores de contexto (with), garantindo que o arquivo seja fechado adequadamente após o encerramento do processo.

Comentários
Postar um comentário