将数据写入 Python 中的文件给出与 UNICODE 相关的错误

Write Data To File in Python Gives Error Related to UNICODE

我基本上是在 Python 中使用 SAX 解析器解析来自 XML 的数据。

我能够解析和打印。但是我想把数据放到一个文本文件中。

示例:

def startElement(self, name, attrs):
    file.write("startElement'"+ name + " ' ")

尝试使用上述示例代码将一些文本写入 test.txt 时,出现以下错误:

TypeError: descriptor 'write' requires a 'file' object but received a 'unicode'

非常感谢任何帮助。

您没有使用打开的文件。您正在使用 file type。然后 file.write 方法被解除绑定,它希望一个打开的文件绑定到:

>>> file
<type 'file'>
>>> file.write
<method 'write' of 'file' objects>
>>> file.write(u'Hello')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: descriptor 'write' requires a 'file' object but received a 'unicode'

如果您有一个已经打开的文件对象,请使用它;也许您在 self:

上有一个名为 file 属性
self.file.write("startElement'" + name + " ' ")

但请注意,因为 name 是一个 Unicode 值,您可能希望将信息编码为字节:

self.file.write("startElement'" + name.encode('utf8') + " ' ")

您还可以使用 io.open() function 创建一个文件对象,该对象将接受 Unicode 值并在编写时将这些值编码为给定的编码:

file_object = io.open(filename, 'w', encoding='utf8')

但是您需要明确说明始终写入 Unicode 值,而不是混合字节字符串(类型 str)和 Unicode 字符串(类型 unicode)。