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 ;)
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:
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:
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í.
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!
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.
http://docs.python.org/release/2.5/whatsnew/pep-343.html
Saludos!