连续阅读python中的前3行

连续阅读python中的前3行,python,python-2.7,python-2.6,Python,Python 2.7,Python 2.6,我有一个巨大的文件,我想从中读取前3行,并将它们放在另一个文件new.txt中。然后,再读3行,但不要从开头开始,应该从第4行开始读3行 1st line 2nd line 3rd line 4th line 5th line 6th line 7th line 8th line 9th line 10th line .... 文件new.txt中的第一个输出为: 1st line 2nd line 3rd line 文件new.txt中的第二个输出为: 4th

我有一个巨大的文件,我想从中读取前3行,并将它们放在另一个文件new.txt中。然后,再读3行,但不要从开头开始,应该从第4行开始读3行

 1st line
 2nd line
 3rd line
 4th line
 5th line
 6th line
 7th line
 8th line
 9th line
 10th line
 ....
文件new.txt中的第一个输出为:

 1st line
 2nd line
 3rd line
文件new.txt中的第二个输出为:

4th line
5th line
6th line

类似这样的内容-请记住,您可以直接使用文件obj而不是
i

from itertools import islice

r = range(20)
i = iter(r)

while True:
    lines = list(islice(i, 3))
    if not lines:
        break
    print lines

[0, 1, 2]
[3, 4, 5]
[6, 7, 8]
[9, 10, 11]
[12, 13, 14]
[15, 16, 17]
[18, 19]

文件是迭代器,所以您所要做的就是将输入按三项分组

提供了对迭代器进行分组的方法:

from itertools import izip_longest

def grouper(n, iterable, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)
现在,您可以将输入文件行分成三行:

with open(inputfilename) as infile:
    for threelines in grouper(3, infile, ''):
        with open(outputfilename, 'w') as outfile:
            outfile.write(''.join(threelines))

您还可以使用获取光标位置
f.tell()

您可以使用以下命令将光标移动到文件中的某个位置:
f.seek()


检查此处:

当然可以,请随意阅读。你试过什么?你说的“new.txt文件中的第二次输出”是什么意思?这是覆盖第一个输出还是附加到第一个输出?这和简单地一次复制六行有什么不同?@surya然后把列表写出来。。。!?