请选择 进入手机版|继续访问电脑版
发新帖

python2 和 python3 通过 mmap 读文件的区别

[复制链接]
7185 2

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在 python2 下可以读出正确的 str 文字。
   with open(STAT_FILE, "r+b") as f:        m=mmap.mmap(f.fileno(), 0, prot=mmap.PROT_READ)        while True:               line=m.readline()                            if line == '': break               print line.rstrip()python3 下却只能读 bytes,用 f 也能正确读取字符串。看了一些例子,貌似 python3 应该就是把文本当 str 的,为何有这个问题呢怎样才能读出 string 呢。大部分行是 utf-8 编码,有部分行里个别字符不是 utf-8 编码。
with open(STAT_FILE, "r+b") as f:    m=mmap.mmap(f.fileno(), 0, prot=mmap.PROT_READ)    while True:            line=m.readline()            line2 = f.readline()#读取字符串            if line == '': break            print ( line.rstrip())

举报 使用道具

回复

精彩评论2

luzhongqiu  注册会员  发表于 2018-5-16 18:14:08 | 显示全部楼层
python3 中,utf8 编码就是 byte 类型,直接 decode 到 Unicode 编码好了。。。。。如果 decode 出错,尝试 errors='ignore'试试看

举报 使用道具

回复
sjmcefc2  新手上路  发表于 2018-5-16 19:00:21 | 显示全部楼层
@luzhongqiu  many thanks.

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表