MMAP,"TypeError:'str'不支持缓冲区接口"| Python

3
f = open('C:\Python33\File.doc')
s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
if (s.find("blabla")) != -1:
    print("True")

当我运行以下代码时,我遇到了错误“TypeError:'str' does not support the buffer interface”,为什么会出现这个错误,我该如何解决?
我在网上搜索了答案,常见的结果与我使用Python 3而不是Python 2以及它处理数据类型的方式有关。但我还没有找到直接的答案。
谢谢!
1个回答

4

str是Unicode码点,不支持缓冲区接口(基本上意味着不能直接访问其底层内存)。一般来说,您需要使用str.encode将它们转换为bytes,或者在这种情况下,您可以通过在前面加上b前缀来使用字节文字而不是字符串文字。

if s.find(b'blabla') != -1:
    ...

程序员需要了解的Unicode知识中很好地解释了为什么需要使用编码来获取字节。这就是为什么Python的str没有提供缓冲接口 - 您需要明确告诉它编码,然后它才知道应该包含哪些字节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接