Pesquisar no blog

Digite pelo menos 2 caracteres para buscar.

← Voltar ao blog
Python 4 min de leitura

Descompactar Todos Arquivos de uma Pasta com Python

O guia passo a passo para descompactar todos arquivos de uma pasta com um único comando Python. É só copiar e colar!

E aí, FERA! Já se pegou encarando uma montanha de arquivos .ZIP e pensando no tempo que ia perder para descompactar todos arquivos da pasta? Seus problemas acabaram! Hoje, vamos aprender a como descompactar todos esses arquivos de uma vez só, com um único comando em Python. Vamos nessa!

Por que aprender a descompactar arquivos .zip com Python?

Sabe aqueles dias que você olha para sua pasta cheia de arquivos .ZIP e a preguiça bate forte? Pois é, Python está aqui para salvar seu dia. Com um simples comando, você pode transformar horas de trabalho em minutos. Imagina só, você tranquilo, tomando um café, enquanto Python faz todo o trabalho pesado.

A Biblioteca zipfile

Vamos começar importando a biblioteca zipfile. Ela é a nossa canivete suíço para lidar com arquivos .ZIP.

import zipfile

Clique Aqui para acessar a documentação desta biblioteca nativa do Python, em Português do Brasil.

Varrendo a pasta com os arquivos .ZIP

Agora, vamos listar todos os arquivos .ZIP na pasta. Para isso, usaremos a biblioteca os e a função os.listdir(). Ela vasculhará a pasta que indicarmos e retornará uma lista com todos os arquivos que encontrar.

Agora, se você estiver com o Python inicializado numa pasta específica e quiser que ele vasculhe essa mesma pasta, você pode usar o método os.getcwd(), que retorna o caminho atual onde o Python está rodando. Veja só:

import os

# Mostra para Python onde estão os arquivos
caminho = os.getcwd()

# Mas você pode informar a pasta que desejar, alterando esse acima por esse (descomente se for usar)
# caminho = '/caminho/para/seus/arquivos'

# Todos arquivos NA PASTA INFORMADA
arquivos = os.listdir(caminho)

Unindo o caminho da pasta com o nome do arquivo

O próximo passo é dar para o Python o endereço completo de cada arquivo.

Para isso, vamos filtrar somente os arquivos `.zip`, e depois usar a função os.path.join(), que vai unir o caminho da pasta com o nome de cada arquivo.

for arquivo in arquivos:
    if arquivo.endswith('.zip'):
        caminho_completo = os.path.join(caminho, arquivo)

Descompactando os arquivos .ZIP

Agora vem a parte divertida! Vamos descompactar todos os arquivos .ZIP que encontramos. Para isso, vamos usar a biblioteca zipfile que importamos no começo.

with zipfile.ZipFile(caminho_completo, 'r') as zip_ref:
    zip_ref.extractall(caminho)

Aqui, 'r' significa que queremos abrir o arquivo .ZIP em modo de leitura. O Python precisa saber se vamos ler, escrever (‘w’) ou fazer as duas coisas (‘r+’ ou ‘w+’) no arquivo. No nosso caso, como só queremos extrair os arquivos, usamos o modo ‘r’.

O Código Completo

Agora que explicamos tudo passo a passo, vamos juntar todas as partes. Veja como o código fica completo:

import os
import zipfile

caminho = os.getcwd()
arquivos = os.listdir(caminho)

for arquivo in arquivos:
    if arquivo.endswith('.zip'):
        caminho_completo = os.path.join(caminho, arquivo)

        with zipfile.ZipFile(caminho_completo, 'r') as zip_ref:
            zip_ref.extractall(caminho)

Navegando Pelas Subpastas

Mas e se você tiver subpastas cheias de arquivos .ZIP para descompactar? Não se preocupe, Python também dá conta disso! Vamos usar a função os.walk(), que pode percorrer cada subpasta e listar todos os arquivos que encontrar. Dá só uma olhada:

for dirpath, dirnames, filenames in os.walk(caminho):
    for arquivo in filenames:
        if arquivo.endswith('.zip'):
            caminho_completo = os.path.join(dirpath, arquivo)

            with zipfile.ZipFile(caminho_completo, 'r') as zip_ref:
                zip_ref.extractall(dirpath)

A função os.walk() vai percorrer cada subpasta dentro do caminho que passamos. Para cada subpasta, ela retorna o caminho para a subpasta (dirpath), uma lista com os nomes das subpastas dentro dela (dirnames) e uma lista com os nomes dos arquivos dentro dela (filenames).

Agora, o seu código final seria:

import os
import zipfile

caminho = os.getcwd()

for dirpath, dirnames, filenames in os.walk(caminho):
    for arquivo in filenames:
        if arquivo.endswith('.zip'):
            caminho_completo = os.path.join(dirpath, arquivo)

            with zipfile.ZipFile(caminho_completo, 'r') as zip_ref:
                zip_ref.extractall(dirpath)

Conclusão

E aí, FERA! Viu como Python pode ser seu melhor amigo na hora de lidar com tarefas chatas? Com um simples comando, você pode descompactar todos os arquivos .ZIP de uma pasta ou até mesmo de subpastas! Não é incrível? Em vez de gastar horas com cliques monótonos, você agora pode relaxar enquanto Python faz todo o trabalho por você. Agora, imagina só o que mais você poderia fazer se dominasse ainda mais essa linguagem poderosa.

É isso que temos para hoje! Se você curtiu essa aula, que tal levar seu aprendizado a um novo patamar com o nosso curso FORMAÇÃO POWER QUERY 2.0? Além de Python, você vai aprender sobre Power Query, SQL, DAX, Power BI e ainda muitas outras técnicas de tratamento de dados que vão te transformar em um verdadeiro ninja da análise de dados.

E sabe o que é melhor?!
De maneira leve, divertida e sem enrolação. Te espero lá, FERA!

Abraço do

logo do Joviano
LEVE COM VOCÊ

Esse conteúdo te ajudou?

Deixe seu curtir ou envie para quem também pode aproveitar.

FÁBRICA DE APPS

Transforme uma rotina em um sistema.

Construa soluções com IA ao lado do Jovi e da equipe, com prática e acompanhamento.

Conhecer a mentoria ↗Ver todos os produtos ↗