68-取出文件的10行内容

使用生成器取文本内容:

def blocks(fobj):
    block = []
    counter = 0
    for line in fobj:
        block.append(line)
        counter += 1
        if counter == 10:
            yield block  # 返回中间结果,下次取值,从这里继续向下执行
            block = []
            counter = 0
    if block:  # 文件最后不够10行的部分
        yield block

if __name__ == '__main__':
    fobj = open('./tmp/shop.data')  
    for lines in blocks(fobj):
        print(lines)
        print()
    fobj.close()

结果输出:

['root:x:0:0:root:/root:/bin/bash
', 'daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
', 'bin:x:2:2:bin:/bin:/usr/sbin/nologin
', 'sys:x:3:3:sys:/dev:/usr/sbin/nologin
', 'root:x:0:0:root:/root:/bin/bash
', 'daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
', 'bin:x:2:2:bin:/bin:/usr/sbin/nologin
', 'root:x:0:0:root:/root:/bin/bash
', 'daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
', 'bin:x:2:2:bin:/bin:/usr/sbin/nologin
']

['root:x:0:0:root:/root:/bin/bash
', 'daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
', 'bin:x:2:2:bin:/bin:/usr/sbin/nologin
', '
', '
', '
', '
', '
']

shop.data文本的内容,一共有13行:

 1 root:x:0:0:root:/root:/bin/bash
 2 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
 3 bin:x:2:2:bin:/bin:/usr/sbin/nologin
 4 sys:x:3:3:sys:/dev:/usr/sbin/nologin
 5 root:x:0:0:root:/root:/bin/bash
 6 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
 7 bin:x:2:2:bin:/bin:/usr/sbin/nologin
 8 root:x:0:0:root:/root:/bin/bash
 9 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
10 bin:x:2:2:bin:/bin:/usr/sbin/nologin
11 root:x:0:0:root:/root:/bin/bash
12 daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
13 bin:x:2:2:bin:/bin:/usr/sbin/nologin
原文地址:https://www.cnblogs.com/hejianping/p/10965918.html