[pyar] Hola Mundo y [HELP!] Consulta sobre encoding de archivo...

Roberto Alsina ralsina en netmanagers.com.ar
Mar Mayo 28 14:07:51 ART 2013


On 28/05/13 13:53, Juan Ignacio wrote:
> Puedes usar el módulo codecs para abrir un fichero indicándole la
> codificación a usar. Por ejemplo, si tienes un fichero en iso-8859-1 y
> quieres salvarlo como utf-8, puedes hacer:
>
> import codecs
> fin = codecs.open('entrada.txt', 'rb', encoding='iso-8859-1')
> fout = codecs.open('saluda.txt', 'wb', encoding='utf-8')
> for linea in fin.readlines():
>     fout.write(linea)
> fout.close()
> fin.close()
>

Ese código tiene un problemita: si pasa algo entre el open y el close
(ya sé que en este ejemplo sería raro ;-),
leakeás filehandles que en linux no importa, pero en windows sí. Yo
vengo tratando de usar siempre context managers:

with codecs.open(''entrada.txt', 'rb', encoding='iso-8859-1') as fin:
    with codecs.open('saluda.txt', 'wb', encoding='utf-8') as fout:
        for linea in fin.readlines():
            fout.write(linea)



> Con el fichero abierto de esa manera, puedes (y debes :-)) trabajar en
> unicode, él hace las conversiones necesarias de forma transparente.
> Este código, si el fichero pepe.py está correctamente codificando en
> utf-8, vemos que las líneas son todas unicode :
>
> import codecs
> for l in codecs.open('pepe.py', encoding='utf-8'):
>     print type(l)




More information about the pyar mailing list