[eside-ghost] reinventando la rueda en python

altern altern2 en gmail.com
Jue Sep 7 13:58:35 CEST 2006


aupa

supongo que estoy reinventando la rueda, a ver si alguno me ayuda.
Necesito copiar un directorio con archivos y subdirectorios desde python 
pero tengo que filtrar unos directorios y archivos con determinadas 
extensiones.

En principio me servia copiarlo todo a lo bestia con
shutil.copytree(origen, destino)

pero como el directorio tiene un monton de historias que no me interesan 
y que suman 13 megas pues me he puesto a la obra. He mirado en internet 
a ver si alguien se habia currado una funcion para hacer algo parecido 
(estoy seguro de que si) pero no he encontrado nada. He llegado hasta aqui:

import os

def recursiveCopy(src, to, folBlackList, extBlackList):
	# exclude: Demo, doc, Tk, WGL, scripts, *.pyo, *.pyc
         for i in os.listdir(src) :
             if os.path.isfile(i) : # files
		# aqui checkear si la extension esta en la extBlackList
                 shutil.copy(os.path.join(src,i), to) # file, folder
             elif os.path.isdir(i) :
		# aqui checkear si esta en la folBlackList
                 newsrc = os.path.join(src, i) # going one level down
                 newto = os.path.join(to, i)
                 os.mkdir(newto) # create if didnt exist
                 recursivecopy(newsrc, newto, folBlackList, extBlackList


recursiveCopy(/blah/blah/OpenGL, /tralara/dist,  ['Demo', 'doc', 'Tk', 
'WGL', 'scripts'], ['.pyo', '.pyc'])


No me chuta bien y ya se me han fundido un par de plomos en la olla en 
el proceso con tanta recursion, igual alguno habeis hecho algo similar 
alguna vez ?

gracias

enrike



Más información sobre la lista de distribución eside-ghost