python 3.x - read - builtins.TypeError: debe ser str, no bytes
python etree lxml (2)
Convierta el archivo binario a base64 y viceversa. Probar en Python 3.5.2
import base64
read_file = open(''/tmp/newgalax.png'', ''rb'')
data = read_file.read()
b64 = base64.b64encode(data)
print (b64)
# Save file
decode_b64 = base64.b64decode(b64)
out_file = open(''/tmp/out_newgalax.png'', ''wb'')
out_file.write(decode_b64)
# Test in python 3.5.2
He convertido mis scripts de Python 2.7 a 3.2, y tengo algunos errores.
# -*- coding: utf-8 -*-
import time
from datetime import date
from lxml import etree
from collections import OrderedDict
# Create the root element
page = etree.Element(''results'')
# Make a new document tree
doc = etree.ElementTree(page)
# Add the subelements
pageElement = etree.SubElement(page, ''Country'',Tim = ''Now'',
name=''Germany'', AnotherParameter = ''Bye'',
Code=''DE'',
Storage=''Basic'')
pageElement = etree.SubElement(page, ''City'',
name=''Germany'',
Code=''PZ'',
Storage=''Basic'',AnotherParameter = ''Hello'')
# For multiple multiple attributes, use as shown above
# Save to XML file
outFile = open(''output.xml'', ''w'')
doc.write(outFile)
en la última línea recibí un error:
builtins.TypeError: must be str, not bytes
File "C:/PythonExamples/XmlReportGeneratorExample.py", line 29, in <module>
doc.write(outFile)
File "c:/Python32/Lib/site-packages/lxml/etree.pyd", line 1853, in lxml.etree._ElementTree.write (src/lxml/lxml.etree.c:44355)
File "c:/Python32/Lib/site-packages/lxml/etree.pyd", line 478, in lxml.etree._tofilelike (src/lxml/lxml.etree.c:90649)
File "c:/Python32/Lib/site-packages/lxml/etree.pyd", line 282, in lxml.etree._ExceptionContext._raise_if_stored (src/lxml/lxml.etree.c:7972)
File "c:/Python32/Lib/site-packages/lxml/etree.pyd", line 378, in lxml.etree._FilelikeWriter.write (src/lxml/lxml.etree.c:89527)
Instalé Python 3.2 y he instalado lxml-2.3.win32-py3.2.exe.
En 2.7 funciona.
El archivo de salida debe estar en modo binario.
outFile = open(''output.xml'', ''wb'')