连续阅读python中的前3行
我有一个巨大的文件,我想从中读取前3行,并将它们放在另一个文件new.txt中。然后,再读3行,但不要从开头开始,应该从第4行开始读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
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然后把列表写出来。。。!?