使用生成器取文本内容:
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