Archivos sin uso en un proyecto

Iniciado por deni_celine, Marzo 06, 2014, 05:36:07 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Marzo 06, 2014, 05:36:07 PM Ultima modificación: Marzo 07, 2014, 11:15:57 AM por deni_celine
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

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

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

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

                        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
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!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Marzo 06, 2014, 11:24:23 PM #2 Ultima modificación: Marzo 06, 2014, 11:54:42 PM por deni_celine
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

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.

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Saludos!







No tienes permitido ver los links. Registrarse o Entrar a mi cuenta