将数据写入 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
)。
我基本上是在 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
)。