python遍历文本并删除特定内容

Python019

python遍历文本并删除特定内容,第1张

按 指定行数 分页读取好处理:

def iterpage(istream, pagesize):

    buffer = []

    for data in istream:

        buffer.append(data)

        if len(buffer)>=pagesize:

            yield buffer

            buffer = []

    if buffer:

        yield buffer

with open("source.txt", 'rt') as handle:

    for page in iterpage(handle, 1000):

        print page  # or your business logical

        print "-"*32  # page break

删除文本文件的前N行:

def removehead(filename, headlines):

    buffer = []

    with open(filename, 'rt') as handle:

        for i, ln in enumerate(handle):

            if ln < headlines:

                continue

            buffer.append(ln)

    

    with open(filename, 'wt') as handle:

        handle.writelines(buffer)

或者:

def getandremovehead(filename, headlines):

    with open(filename, 'rt') as handle:

        buffer = handle.readlines()

    with open(filename, 'wt') as handle:

        handle.writelines(buffer[headlines:])

    return buffer[:headlines]

但遇到大文本文件时,删除其中N行不是很理想的业务方案

for循环遍历,实际上是返回一个迭代器,并不断调用其next()方法的过程。next()返回什么,取决于迭代器的具体实现,对于str类型来说,就返回下一个字符串;对于file类型来说,就返回下一行。