当前位置: 首页 > 面试题库 >

builtins.TypeError:必须为str,而不是字节

解高昂
2023-03-14
问题内容

我已经将脚本从Python 2.7转换为3.2,并且有一个错误。

# -*- 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)

在最后一行,我得到了这个错误:

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)

我已经安装了Python 3.2,并且已经安装了lxml-2.3.win32-py3.2.exe。

在Python 2.7上可以使用。


问题答案:

输出文件应处于二进制模式。

outFile = open('output.xml', 'wb')


 类似资料:
  • 问题内容: 我一直在寻找一种从python脚本运行外部进程并在执行期间打印其stdout消息的方法。 下面的代码有效,但是在运行时不输出标准输出。退出时,出现以下错误: sys.stdout.write(nextline)TypeError:必须为str,而不是字节 我正在使用python 3.3.2 问题答案: Python 3处理字符串有些不同。最初,字符串只有一种类型:。上世纪90年代,当u

  • 问题内容: 我有以下抛出的非常基本的代码; 我尝试将解码设置为Data变量,如下所示,但是会引发相同的错误; 有什么建议? 问题答案: 您只是将其以错误的顺序放置,是无辜的错误。 (深入解答)。正如wim礼貌地指出的那样,在极少数情况下,他们可以选择UTF-16或UTF-32。在这种情况下,对于开发人员而言,这种情况将不那么常见,在这种情况下,他们将有意识地决定放弃宝贵的带宽。因此,如果遇到编码问

  • 我有一个问题,我做了一个乒乓游戏,但我有一个问题,把分数打印到pyplay窗口。 我得到错误'TypeError:参数1必须是pygame.Surface,而不是str 我在文本中输入了blit,但出现了一个错误。我知道代码乱七八糟,我稍后会修复它

  • 问题内容: 我一直在尝试更新一个名为libpynexmo的小型Python库以与Python 3一起使用。 我一直坚持这个功能: 遇到这个问题时,json会回应: 我在一些地方读到,应该为您传递带有附件的对象(在这种情况下为对象),但是它不适用于对象。 我不知道下一步该怎么做,但是由于我的整个1500行脚本是新转换为Python 3的,所以我不想回到2.7。 问题答案: 我最近写了一个小功能来发送

  • 问题内容: 以下是我的代码: 当我运行它时,它给了我 那么应该是哪种类型呢? 问题答案: 引发的唯一参数表示要引发的异常。这必须是异常实例或异常类(从Exception派生的类)。 尝试这个:

  • 我正在寻找一种从python脚本运行外部进程并在执行过程中打印其标准输出消息的方法 下面的代码可以工作,但在运行时不打印标准输出。当它退出时,我得到以下错误: 系统。斯特杜特。写入(下一行)类型错误:必须是str,而不是bytes 我正在使用python 3.3。2.