Criando Arquivos ZIP em Python: Do Diretório Completo à Seleção Personalizada
Criando Arquivos ZIP em Python: Do Diretório Completo à Seleção Personalizada
O Python torna simples criar arquivos ZIP e TAR, seja para comprimir um diretório inteiro ou selecionar arquivos específicos.
Use shutil.make_archive para um zip rápido de diretório inteiro:
shutil.make_archive(nome_saida, 'zip', nome_dir)
Para controle granular, a classe zipfile.ZipFile permite especificar arquivos individuais:
ZipFile.write(nome_arquivo)
Passo 1: Preparar o Ambiente
- Importe os módulos necessários:
from shutil import make_archive from zipfile import ZipFile from os import path import os
- Garanta que o arquivo fonte existe e obtenha seu caminho absoluto.
if path.exists("guru99.txt"): src = path.realpath("guru99.txt") - Opcionalmente renomeie um arquivo existente para corresponder ao nome alvo.
Passo 2: Compactar o Diretório Inteiro
Quando você quer arquivar tudo em uma pasta, use make_archive:
root_dir, _ = path.split(src)
make_archive("guru99_arquivo", "zip", root_dir)
Isso cria guru99_arquivo.zip no diretório de trabalho atual.
Passo 3: Adicionar Arquivos Específicos a um Novo ZIP
Se você precisa de controle mais fino, a classe ZipFile é ideal:
with ZipFile("testeguru99.zip", "w") as novo_zip:
novo_zip.write("guru99.txt")
novo_zip.write("guru99.txt.bak")
A instrução with fecha automaticamente o arquivo quando o bloco termina.
Passo 4: Verificar o Resultado
Abra o arquivo ZIP gerado no explorador de arquivos do seu sistema operacional para ver o conteúdo. No Windows, um duplo clique exibirá a lista de arquivos incluídos.
Abajo estão capturas de tela ilustrativas de um fluxo de trabalho típico:







Código Completo (Python 3)
import os
from shutil import make_archive
from zipfile import ZipFile
from os import path
def main():
if path.exists("guru99.txt"):
# Obtém caminho absoluto do arquivo fonte
src = path.realpath("guru99.txt")
# Opcional: renomeia arquivo existente
os.rename("carreira.guru99.txt", "guru99.txt")
# Arquiva o diretório inteiro contendo o arquivo
root_dir, _ = path.split(src)
make_archive("guru99_arquivo", "zip", root_dir)
# Cria segundo ZIP com apenas arquivos selecionados
with ZipFile("testeguru99.zip", "w") as novo_zip:
novo_zip.write("guru99.txt")
novo_zip.write("guru99.txt.bak")
if __name__ == "__main__":
main()
Resumo
- Para zipar um diretório inteiro, chame
shutil.make_archive('nome', 'zip', root_dir). - Para adicionar arquivos específicos, use
ZipFile.write(nome_arquivo)dentro de um blocowith.
python
- Python File I/O: Dominando Operações de Arquivo, Leitura, Escrita e Gerenciamento
- Lendo Arquivos em Java com BufferedReader – Guia Prático com Exemplos
- Dominando o Método strip() do Python: Guia Completo e Exemplos Práticos
- Domine o str.count() do Python: Como Contar Caracteres e Substrings com Exemplos
- Função round() em Python Explicada com Exemplos Práticos
- Dominando a Função map() do Python: Sintaxe, Exemplos e Boas Práticas
- Python timeit(): Medindo Tempo de Execução com Exemplos Práticos
- Counter do Python em collections: Contagem Eficiente, Atualização e Operações Aritméticas
- Python list.count(): Guia Especializado com Exemplos Práticos
- Python List index(): Como Encontrar Posições de Elementos com Exemplos Práticos