El 24 de agosto de 2010 19:05, Mauricio Baeza <mauri...@correolibre.net> escribió: > 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)
Aquí te dice que estás intentando escribir caracteres unicode en un fichero ascii. > 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() En python3 todo texto es unicode y los ficheros de texto usan la codificación por defecto del sistema (utf8) si no especificas otra cosa. Para abrir ficheros utf8 en python 2.x se tiene que usar el módulo codecs. archivo=codecs.open("Factura.xml","w",encoding="utf8") _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/