Joviano

Bem vindo ao

Blog do Jovi!

O blog do Jovi tem como objetivo ajudar você com suas dúvidas, além de expandir seu conhecimento através da informação.

Descompactar Todos Arquivos de uma Pasta com Python

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

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Receba conteúdos do Jovi!

Digite seu interesse abaixo:

Quer Aprender sobre Power Query?

Conheça nossa formação e tudo que você pode aprender com ela.

Mais conteúdos gratuitos para você!

OPA, vejo que você é novo por aqui!

Temos um presente de boas vindas para os amantes de Blog!

E ai FERA?!

Não vou atrapalhar tua leitura deste super artigo.

Só quero te dizer que por ser um visitante novo aqui no site, nosso sistema está programado para te enviar um cupom de desconto para a FORMAÇÃO POWER QUERY 2.0, que é um pacotão de cursos do JOVI, com mais de 300 horas de conteúdo.

Informe seus dados a seguir, que te enviaremos as instruções para resgate desse cupom exclusivo.

Após enviar, pode fechar essa janela, que seu presente já está em processamento.

A ementa possui centenas de aulas, e resumimos em um painel de PowerBI o qual enviaremos a você.

Preencha seu nome e email que em instantes receberá a ementa completa deste pacote de cursos.

Formato Aceito: [+ código do pais] [código de área] [número]