2016-04-28 195 views
0

我有以下code written by Michael查找linecount便宜,但是当我运行它时,它给了我一个错误AttributeError File object has no attribute 'raw'错误,我不知道为什么会发生这种情况。下面是引用任何帮助_make_gen(f.raw.read)高度赞赏AttributeError文件对象没有'raw'属性错误

from itertools import (takewhile,repeat) 

def _make_gen(reader): 
    b = reader(1024 * 1024) 
    while b: 
     yield b 
     b = reader(1024*1024) 

def rawpycount(filename): 
    f = open(filename, 'rb') 
    f_gen = _make_gen(f.raw.read) 
    return sum(buf.count(b'\n') for buf in f_gen) 
+4

重新阅读答案,特别是:“这只适用于Python 3.” –

+0

对不起,错过了这个部分,但有没有其他方法可以在Python 2.7上运行? – Zack

+1

我认为它应该只是'f.read',python 3直接与unicode协同工作,python 2.7直接与字节协同工作。 –

回答

2

更改为_make_gen(f.read)代码。

Python 3.x默认使用unicode,因此raw转换为字节。另一方面,Python 2.x默认使用字节,因此不需要其他任何东西。