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