Como Abrir Arquivos Zip no Python Automaticamente

Você sabia que é possível abrir e trabalhar com arquivos ZIP no Python de forma automática? Aprenda como fazer isso com as bibliotecas Pandas e ZipFile.

Para trabalhar com arquivos ZIP no Python, use o módulo nativo zipfile, que abre, lê, extrai e cria arquivos compactados sem instalar nada. Com ZipFile("dados.zip") você lista o conteúdo, extrai arquivos e até lê os dados direto na memória. O Pandas também lê CSVs de dentro de um ZIP automaticamente, sem precisar descompactar antes.

Se quiser pode acompanhar esse conteúdo em formato de vídeo ou pode acessar o nosso Canal do YouTube para mais vídeos!

O que você aprende neste vídeo

Resposta rápida: A aula ensina a ler bases de dados de dentro de um arquivo ZIP no Python, sem descompactar nada antes. Você aprende a apontar o pd.read_csv() direto para o .zip, forçar compression='zip', abrir o compactado com zipfile.ZipFile() dentro de um with, listar o conteúdo com namelist() e ler cada arquivo com o open() da própria pasta.

Neste vídeo (10 min):

  • 1:00 - import pandas as pd e leitura direta do zip de um arquivo só com pd.read_csv()
  • 2:00 - A função escolhida é a do arquivo de dentro do zip: read_csv() para CSV, read_excel() para Excel
  • 3:00 - Parâmetro compression='zip' para quando a inferência automática do pandas falha
  • 4:00 - Zip com mais de um arquivo dá erro de multiple files e passa a exigir o zipfile
  • 5:00 - Abrir o compactado com with zipfile.ZipFile() no lugar do open() comum
  • 6:00 - namelist() lista os arquivos de dentro e o for percorre cada um deles
  • 8:00 - pasta_zip.open() entregue ao read_csv() e o uso das tabelas fora do with

Trechos do vídeo:

  • O pandas lê um CSV de dentro de um ZIP sem descompactar, mas só quando o compactado tem um único arquivo
  • Zip com dois ou mais arquivos faz o read_csv() falhar com multiple files: aí o caminho é o zipfile
  • Passar só o nome faz o pandas procurar na pasta do código; o arquivo tem que vir de pasta_zip.open()
  • O pandas exige pip install pandas antes de rodar o código; o zipfile é apenas importado

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.

Como Abrir Arquivos Zip em Python Automaticamente

Trabalhar com arquivos zip automaticamente no Python pode ser uma solução valiosa quando estamos lidando com grandes conjuntos de dados, muitos arquivos, ou automatizando processos.

Ao utilizar as bibliotecas Pandas e ZipFile, conseguimos simplificar e automatizar esse processo, abrindo e manipulando arquivos ZIP, sejam eles simples ou contendo múltiplos arquivos.

Arquivos zip Disponíveis

No material disponível para download, você encontrará dois arquivos zip para testar com o código que vamos desenvolver.

Arquivos zip Disponíveis

No arquivo produtos_agricolas_1.zip, haverá apenas um arquivo dentro. Já no arquivo produtos.zip, temos dois arquivos compactados.

Bibliotecas Necessárias

Para essa aula, utilizaremos as bibliotecas Pandas e ZipFile. A biblioteca ZipFile já faz parte da biblioteca padrão do Python, então você só precisará instalar o Pandas utilizando o seguinte comando: pip install pandas

comando: pip install pandas

Leitura de Arquivos zip Simples com Pandas

Com o Pandas instalado, podemos partir para o nosso primeiro exemplo, onde iremos ler um arquivo zip simples.

Nesses casos, quando o arquivo zip contém um único arquivo, como uma tabela de dados em formato CSV, a maneira mais rápida e direta de acessar os dados é utilizando o Pandas.

Ele possui uma funcionalidade nativa que permite ler arquivos comprimidos diretamente, simplificando o processo de importação e análise de dados.

Basta usar o método de leitura adequado ao tipo de arquivo compactado. Como estamos lidando com um arquivo CSV, vamos utilizar o método read_csv(). Se fosse um arquivo Excel, por exemplo, usaríamos read_excel().

Python
import pandas as pd

tabela = pd.read_csv("produtos_agricolas_1.zip")

print(tabela)

O Pandas infere automaticamente que o arquivo está comprimido e lida com a descompressão para você, exibindo a tabela de produtos agrícolas corretamente.

Leitura de Arquivos zip Simples com Pandas

Caso receba um erro durante esse processo, pode ser que a sua versão do Pandas não esteja atualizada. Nesse caso, basta adicionar o parâmetro compression ao método read_csv.

Ícone PythonPython Impressionador

Você vai aprender a linguagem de Programação que mais cresce no Mundo para fazer automações incríveis, desenvolver sites, fazer análises de dados, trabalhar com Ciência de Dados, Inteligência Artificial, mesmo que você nunca tenha tido nenhum contato com Programação na vida.

Começar agoraSeta para a direita
Fundo PythonTelas Python
Luz Python
Python
import pandas as pd

tabela = pd.read_csv("produtos_agricolas_1.zip", compression="zip")

print(tabela)

Esse comando força o Pandas a usar o método correto de descompressão, garantindo que o arquivo zip seja processado corretamente.

Leitura de Múltiplos Arquivos zip com ZipFile

Quando o arquivo zip contém múltiplos arquivos ou pastas compactadas, é necessário um controle maior sobre o conteúdo. Nesses casos, somente o Pandas não conseguirá lidar com os arquivos automaticamente e poderá retornar um erro.

Para resolver isso, utilizaremos o módulo ZipFile, que faz parte da biblioteca padrão do Python, para manipular arquivos zip. Continuaremos utilizando o Pandas para ler os arquivos CSV.

A primeira coisa que faremos no nosso código será importar as bibliotecas zipfile e pandas.

Python
import pandas as pd
import zipfile

Em seguida, utilizaremos um bloco with para abrir o arquivo zip de forma segura, o que garante que o arquivo seja fechado corretamente após o uso, evitando erros e problemas de memória.

Para abrir o arquivo zip, utilizaremos a classe ZipFile do módulo zipfile. Essa classe fornece as funcionalidades necessárias para abrir, ler, criar e manipular arquivos zip.

Passamos o nome do arquivo e o parâmetro “r”, indicando que estamos abrindo o arquivo no modo de leitura.

Após abrir o arquivo, usamos o método .namelist() para obter uma lista com os nomes de todos os arquivos contidos no zip e, em seguida, imprimimos esses nomes na tela.

Python
import pandas as pd
import zipfile

with zipfile.ZipFile("produtos.zip", "r") as pasta_zip:
    nomes_arquivos = pasta_zip.namelist()
    print(nomes_arquivos)
Arquivos zips listados

Para ler cada um desses arquivos, criamos um loop for que itera sobre a lista de arquivos.

Usamos o método open() da biblioteca zipfile, que permite abrir os arquivos compactados sem precisar extraí-los. Em seguida, lemos esses arquivos como tabelas utilizando o método read_csv() do Pandas.

Por fim, exibimos o conteúdo das tabelas com um print().

Python
import pandas as pd
import zipfile

with zipfile.ZipFile("produtos.zip", "r") as pasta_zip:
    nomes_arquivos = pasta_zip.namelist()
    print(nomes_arquivos)
    for arquivo in nomes_arquivos:
        tabela = pd.read_csv(pasta_zip.open(arquivo))
        print(tabela)
Leitura de Múltiplos Arquivos zip com ZipFile

Lidando com Arquivos zip Grandes e Estruturados

Em alguns casos, você precisará lidar com arquivos zip que possuem várias camadas de subpastas, arquivos e até outros arquivos zip dentro.

Nesses casos, pode ser necessário o uso de bibliotecas adicionais, como os ou pathlib, para navegar pela estrutura de diretórios e acessar os arquivos desejados.

A abordagem básica ainda é usar ZipFile para abrir o arquivo, mas, dependendo da estrutura, pode ser necessário concatenar caminhos de diretórios ou realizar verificações adicionais antes de processar os arquivos.

Perguntas frequentes

1. Qual módulo do Python abre arquivos ZIP?

O módulo zipfile, que já vem embutido no Python, é o padrão para abrir arquivos ZIP. Não precisa instalar nada: basta import zipfile e usar a classe ZipFile. Com ela você lista os arquivos internos, extrai um ou todos e lê o conteúdo, tudo direto pelo código.

2. Como extrair um arquivo ZIP com Python?

Abra o ZIP com with ZipFile("arquivo.zip") as z: e chame z.extractall("pasta_destino") para extrair tudo, ou z.extract("nome.csv") para um arquivo específico. O uso do with garante que o arquivo seja fechado corretamente ao final. Sem informar a pasta, os arquivos vão para o diretório atual do script.

3. Como ler um CSV dentro de um ZIP com Pandas?

O Pandas lê direto de um ZIP: basta usar pd.read_csv("dados.zip") e ele detecta a compactação automaticamente quando há um único arquivo dentro. Se o ZIP tiver vários arquivos, abra-o com zipfile, escolha o desejado e passe-o ao read_csv. Assim você analisa os dados sem descompactar manualmente.

4. Como criar um arquivo ZIP com Python?

Abra um novo arquivo em modo de escrita com ZipFile("novo.zip", "w") e adicione arquivos com write("arquivo.txt"). Você pode definir o nível de compactação pelo parâmetro compression. Para juntar vários arquivos, use um laço percorrendo a lista de nomes e chamando write para cada um dentro do mesmo ZIP.

Conclusão – Como Abrir Arquivos zip no Python Automaticamente

Nessa aula, mostrei como trabalhar com arquivos ZIP no Python utilizando duas abordagens eficientes e práticas com as bibliotecas Pandas e ZipFile.

Essas abordagens são extremamente úteis quando você precisa automatizar processos e leituras de arquivos comprimidos, sem a necessidade de extração manual, o que economiza tempo e torna seu código mais eficiente.

Essas ferramentas serão muito úteis quando você precisar lidar com grandes volumes de dados comprimidos, seja em projetos pessoais ou profissionais.

Hashtag Treinamentos

Para acessar outras publicações de Python, clique aqui!


Quer aprender mais sobre Python com um minicurso básico gratuito?

Posts mais recentes de Python

Posts mais recentes da Hashtag Treinamentos