Python | Extrair arquivos *.zip

A praticidade do python realmente me encanta. =)

Hoje realmente solucionei um “probleminha”, que toda vez tomava um certo tempo.

Todo dia recebo uma grande quantidade de arquivos zip os quais precisam ser extraídos, apenas os (*.txt).

E faz alguns dias que tenho feito este processo manualmente, mas hoje consegui um tempinho para solucionar este problema.

O Python possui uma lib nativa chamada zipfile que faz todo o trabalho.

Utilizando esta lib fiz um pequeno script python que faz uma busca por arquivos *.zip dentro de um diretório específico, verificando o conteúdo e extraindo apenas os arquivos  (*.txt).

No meu caso precisei utilizar mais lógica para ficar um trabalho completo e automático, segue o código para extrair o conteúdo de um arquivo zip.

Fique a vontade para melhorá-lo e espero que ajude de alguma maneira.


#!/usr/bin/env python
# -*- coding: utf-8 -*-
#############################################################################################
# extract_zip.py - Extract (*.txt) files from zip.
#
# Using:
#  - Python 2.5
#
# by Razec,  https://razec.wordpress.com
######################################July/2010################################################
import os
import zipfile

# Method extract files from a zip.
def unzip(path):
 file = zipfile.ZipFile(path, "r")
 # list file information
 for info in file.infolist():
 print info.filename, info.date_time, info.file_size
 # list filenames
 for name in file.namelist():
 if not os.path.exists(os.path.dirname(name)):
 # Create that directory
 os.mkdir(os.path.dirname(name))
 # Take extension
 ext = os.path.splitext(name)[1]
 # check extension file
 if ext in (".txt"):
 # Write files to disk
 temp = open(name, "wb") # create the file
 data = file.read(name) #read the binary data
 temp.write(data)
 temp.close()
 file.close()

# List all *.zip files and extract them.
def list_dir(dir):
 #filename = "C:tempextract"
 for pathzip in os.listdir(dir):
 extzip = os.path.splitext(pathzip)[1]
 if extzip in (".zip"):
 # Call unzip method (Extract Files)
 unzip(pathzip)
 print "Extracted files"

#---MAIN---
if __name__ == "__main__":
 dir = raw_input("Directory: ").strip()
 list_dir(dir)


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s