Mi primer "programa" en python, me queda funciones que no se muy bien cómo solventar
acido || cuatroxl.org
acido69 en gmail.com
Mar Nov 6 03:03:59 CET 2007
Hola a todos, antes de nada explico lo que hace el programita:
le paso un directorio y busca todos los archivos htm(podría buscar html o
algo así pero será para la próxima versión) para hacer lo siguiente:
-convierte los nombres de los tags en minúsculas, si lo hay
-convierte a codigo html los caracteres tipo(á, é, í, ó....); esto lo
saca de un archivo configurable(config.txt)
-es recursivo en todas las carpetas hijas.
El código ya funciona, pero me gustaría:
-que me reportara el error(en caso de haberlo) que se puede presentar
a la hora de sobrescribir el archivo
-me preocupa que exista archivos en utf8 y yo los guarde como ansii,
como detecto que codificación tiene???????
Y bueno, más que nada me gustaría le mirareis haber que puedo mejorar,
porque creo que lo de reescribir los archivos no esta mu allá
--------------
config.txt
--------------
á=á
Á=Á
é=é
É=É
í=í
---------------------------------
replacesHTML_v003.py
---------------------------------
import os,sys
import string,re
def reemplaza(coincidencias, f):
#coincidencias=[('1', 'uno'), ('2', 'dos'), ('3', 'tres'), ('4',
'cuatro')...]
for i in coincidencias:
f=re.sub(i[0],i[1], f)
return f
def Mm(f):
coincidencias1=re.findall("[\n][^<]*[>]",f)
coincidencias2=re.findall("[<][^>]*[\n]",f)
coincidencias3=re.findall("[<].*[>]",f)
resultado=f
for i in coincidencias1:
busca=re.search(i,resultado)
if busca:
p1=busca.start()
p2=busca.end()
resultado1=resultado[:p1]
resultado2=resultado[p2:]
anadido=string.lower(f[p1:p2])
resultado=resultado1+anadido+resultado2
for i in coincidencias2:
busca=re.search(i,resultado)
if busca:
p1=busca.start()
p2=busca.end()
resultado1=resultado[:p1]
resultado2=resultado[p2:]
anadido=string.lower(f[p1:p2])
resultado=resultado1+anadido+resultado2
for i in coincidencias3:
busca=re.search(i,resultado)
if busca:
p1=busca.start()
p2=busca.end()
resultado1=resultado[:p1]
resultado2=resultado[p2:]
anadido=string.lower(f[p1:p2])
resultado=resultado1+anadido+resultado2
return resultado
def corrige(archivo, caracterValor):
flectura=open(archivo,'r')
contenido=flectura.read()
flectura.close()
contenido=Mm(contenido)
contenido=reemplaza(caracterValor, contenido)
#aquí guardas el nuevo
#si toddo ok devuelve true
#si falla algo devuelve false y para todo
fescritura=open(archivo, 'w')
fescritura.write(contenido);
fescritura.close
#aquí siempre devuelve true, pero realmente no comprueba nada
return 1
def getCaracterValor(path='config.txt'):
salida=[]
flectura=open(os.path.join(path),'r')
for i in flectura:
a = i.split('=')
a[1] = a[1][0:-1]
salida.append((a[0],a[1]))
flectura.close
return salida
def getFiles(path):
src = os.path.realpath(path)
for i in os.listdir(path):
if os.path.isfile(os.path.join(path, i)):
_extension=i.split('.')[-1]
if _extension == 'htm':
if corrige(src+'\\'+i, getCaracterValor()):
print src+'\\'+i+'------------->OK'
else:
print src+'\\'+i+'------------->NO'
if os.path.isdir(os.path.join(path, i)):
getFiles(src+'\\'+i)
return 1
if __name__ == '__main__':
try:
if len(sys.argv) == 1:
#mete solo un argumento
if os.path.isdir(sys.argv[1]):
#a metedio un directorio
getFiles(sys.argv[1])
except:
print "Uso: python",sys.argv[0], " nombre_de_directorio"
sys.exit(1)
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es