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