Mostrar mensagens com a etiqueta python. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta python. Mostrar todas as mensagens

quinta-feira, novembro 23, 2006

Percorrer directorias em Python

No mundo da programação, é frequente ter-se que percorrer recursivamente directorias, para pesquisar, recuperar determinados tipos de ficheiros, indexar ou qualquer outro tipo de tarefas.
Dependendo da linguagem de programação, esta tarefa pode ser realizada com mais ou menos facilidade.

Em python, existe uma função óptima para essa tarefa: walk( top[, topdown=True [, onerror=None]]).
Quando a função é chamada, esta devolve 3 estruturas: uma string que contem a directoria corrente, uma lista que contém as subdirectorias da directoria corrente e uma lista com os ficheiros da directoria corrente.

Um exemplo de código para fazer uma listagem dos ficheiros presentes numa directoria raiz e em todas as suas subdirectorias poderia ser algo assim:

import os

for root, dirs, files in os.walk('/home/dcruz/teste_dir'):
for file in files:
print os.path.join(root, file)



Dificilmente poderia ser mais fácil!
E mais uma vez, convém não esquecer que python funciona em imensos sistemas operativos(Linux, Mac OS, Windows, ...), só é preciso fornecer o enderço correcto da directoria consoante o sistema operativo que se esteja a usar.

segunda-feira, novembro 06, 2006

Comprimir/Descomprimir ficheiros .gz em Python

GNU Zip (ou simplesmente gzip) é um formato de compressão muito usado no mundo Unix/Linux.
Como ultimamente tenho andado a fazer uns trabalhos em Python, e tive que lidar com ficheiros gzip, reparei que à documentação de python faltava um exemplo do uso, da API disponibilizada por esta linguagem, para a manipulação de esse tipo de ficheiros.

Para descomprimir:
import gzip
fileObj = gzip.GzipFile("/home/dcruz/dump.txt.gz", 'rb');
fileContent = fileObj.read()
fileObj.close()
Neste exemplo, a variável fileContent fica com o conteúdo do ficheiro em memória, por isso, se quiserem guardar a versão descomprimida num ficheiro à parte só terá que fazer:
fileObj = open("/home/dcruz/dump.txt", 'wb')
fileObj.write(fileContent)
fileObj.close()

Para comprimir:
import gzip
fileObj = gzip.GzipFile("/Users/mary/hamlet.txt.gz", 'wb');
fileObj.write(fileContent)
fileObj.close()

A API de Python suporta igualmente a manipulação dos formatos Zlib, Bzip2, Zip, Tar.