[Python-es] Código funciona en Py3 pero no en Py2.6

Mauricio Baeza mauricio en correolibre.net
Mar Ago 24 19:05:50 CEST 2010


Hola a todos:

Estoy haciendo mis primeros programas en Python y tengo la siguiente
duda. Si hago:

$ python3 actualizarxml.py

El archivo se actualiza bien. Pero si hago:

$ python actualizarxml.py

Me muestra el siguiente mensaje de error y el archivo XML lo deja
trunco.

Traceback (most recent call last):
  File "actualizarxml.py", line 13, in <module>
    domDoc.writexml(xml_file)
  File "/usr/lib/python2.6/site-packages/_xmlplus/dom/minidom.py", line
1746, in writexml
    node.writexml(writer, indent, addindent, newl)
  File "/usr/lib/python2.6/site-packages/_xmlplus/dom/minidom.py", line
816, in writexml
    _write_data(writer, attrs[a_name].value)
  File "/usr/lib/python2.6/site-packages/_xmlplus/dom/minidom.py", line
306, in _write_data
    writer.write(data)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in
position 41: ordinal not in range(128)

La ultima línea me hizo pensar en algún caracter extraño pero el archivo
es generado correctamente por la misma librería y donde se corta el XML
son caracteres válidos, aquí el código que estoy usando:

# This Python file uses the following encoding: utf-8
from xml.dom import minidom

archivo = open('sellob64.txt', 'r')
sello = archivo.read()
archivo.close()

domDoc = minidom.parse('Factura.xml')
nodo = domDoc.getElementsByTagName('Comprobante')
nodo[0].setAttribute('sello',sello)

archivo = open('Factura.xml', 'w')
domDoc.writexml(archivo)
archivo.close()

Puedo usar la versión 3, pero todo lo he venido haciendo en 2.6 y me
gustaría seguir haciéndolo. Uso ArchLinux x64 pero lo probé también en
un Ubuntu 10.04 con el mismo resultado.

¿Alguna idea para seguir investigando?


Saludos y gracias


-- 
Mauricio Baeza

10 años usando OpenOffice.org, libre, gratuito y seguro
_______________________________
Todo lo que no es dado es perdido
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100824/d8ea84a2/attachment.html>


Más información sobre la lista de distribución Python-es