Underc0de

Programación Scripting => Python => Mensaje iniciado por: deni_celine en Marzo 06, 2014, 05:36:07 PM

Título: Archivos sin uso en un proyecto
Publicado por: deni_celine en Marzo 06, 2014, 05:36:07 PM
Suponiendo que estamos en un proyecto web, y ahi muchso archivos que no utilizamos (imagenes, flash, etc) .. y nos da "flojera" ir haciendo una busqueda una por una para ver si se esta utilizando en alguna parte o no, puedes hacer un script que te simplifique la vida, o simplemente pq quieres hacer un script xD solo genere un listado para ver cuales son los archivos que no estaban mencionados en los fuentes, pero tomando esta idea podrías borrarlas o mejor aún moverlas a otro directorio de respaldo
aqui os dejo por si a alguien le sirve o quiere aportar  ;)

Código (python) [Seleccionar]

import os,datetime,shutil
dir_explorar = "/var/www/mysitio"
#Crea lista de imagenes
print "Creando listado de imagenes..."
img = []
p_img = []
for root, dirs, files in os.walk(dir_explorar):
for f in files:
ext = f.split(".")[-1]
if  ext in ("jpg","gif","png","swf","jpeg","pdf"):
img.append(f)
p_img.append(os.path.join(root,f))

#Recorrer directorio para buscar las imagenes
print "Buscando en los archivos..."
en_uso = []

for root, dirs, files in os.walk(dir_explorar):
for f in files:
f = os.path.join(root,f)
ext = f.split(".")[-1]
if  ext in ("php","tpl","js","css"):
#print "-buscando en",f
with open(f,"r") as file:
texto2 = file.read()
cont = 0
for i in img:
if (texto2.find(i) > 0):
en_uso.append(p_img[cont])
cont = cont+1

#Obtneer img en deshuso desde las img en uso e_e
print "Generando listado de archivos en deshuso..."
sin_uso = [a for a in p_img if a not in en_uso]
"""
file=open('resultado.log','a')
file.write('Resultado\n')
file.write('------------\n')
file.write('\n'.join(sin_uso))
file.close()
print "Busqueda Finalizada, se ha generado resultado.log"
"""
ruta = "respaldo_"+datetime.datetime.now().strftime("%Y%m%d_%p%I%M")
print "Moviendo los archivos en deshuso..."
if not os.path.isdir(ruta):
os.mkdir(ruta)
for arc in sin_uso:
shutil.move(arc, os.path.join(ruta,arc.split(os.sep)[-1]))
print "Buscada Finalizada, archivos movidos a", ruta
Título: Re:Archivos sin uso en un proyecto
Publicado por: Once en Marzo 06, 2014, 10:57:48 PM
Muy buena idea brother, nunca se me ocurrió hacer un script para esto.

Con respecto al script, te puedo hacer un par de observaciones (espero no te molesten).

1. Puedes evitar tantos or a la hora de verificar la extensión de script de esta manera:

Código (python) [Seleccionar]

ext = f.split(".")[-1]  # Obtienes la extension del archivo
if ext in ("jpg", "gif", "png", "swf", "jpeg", "pdf"):  # Y verificas si está en la lista de las extensiones "permitidas"


Además puedes agregar o eliminar una extensión modificando sólo la lista de las extensiones permitidas.

2. Cuando haces:

Código (python) [Seleccionar]

                        for texto in file.readlines():
                                texto2 += texto.upper()
                        file.close()
                        for i in img:
                                if (texto2.find(i.upper()) > 0):
                                        en_uso.append(i)


Por cada línea del archivo recorres la lista de imágenes.

Lo mejor sería usar read() en lugar de readlines() para leer todo el archivo de una vez y ahí sí, recorrer y comprobar la lista de imágenes. Algo así.

Código (python) [Seleccionar]
with open(f, "r") as file:
                texto2 = file.read().upper()
                for i in img:
                    if (texto2.find(i.upper()) > 0):
                        en_uso.append(i)


3. No es buena idea comparar los archivos en mayúsculas. En Windows no es problema, pero en Linux Archivo.png y archivo.png no son el mismo archivo.

Saludos!
Título: Re:Archivos sin uso en un proyecto
Publicado por: deni_celine en Marzo 06, 2014, 11:24:23 PM
las observaciones o criticas constructivas son uno de los motivos por los que público xd así aprendo ;) asi que gracias brotha por tus consejos, y lo del punto 3 oh yesus! tienes razón, bueno estaba en un server windows asi que paso desapercibido xd  Saludos :D

edit: modifique el código con tus consejos, solo me quedo la duda del "with" , no sé bien para que sirve , le preguntare a google xD
Título: Re:Archivos sin uso en un proyecto
Publicado por: Once en Marzo 07, 2014, 12:44:45 AM
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
edit: modifique el código con tus consejos, solo me quedo la duda del "with" , no sé bien para que sirve , le preguntare a google xD

En este caso lo que hace es abrir el archivo bajo el alias file y una vez se sale del bloque del with, el mismo se encarga de cerrar el archivo.

http://docs.python.org/release/2.5/whatsnew/pep-343.html

Saludos!