可以通过两行迭代文件吗?

时间:2011-10-30 16:59:59

标签: python

  

可能重复:
  reading lines 2 at a time

在python中,我们可以逐行迭代文件。但是,如果我想要两行迭代呢?

f = open("filename")
for line1, line2 in ?? f ??:
    do_stuff(line1, line2)

3 个答案:

答案 0 :(得分:5)

使用itertools recipes中的grouper功能。

from itertools import zip_longest

def grouper(n, iterable, fillvalue=None):
    "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
    args = [iter(iterable)] * n
    return zip_longest(fillvalue=fillvalue, *args)


f = open(filename)
for line1, line2 in grouper(2, f):
    print('A:', line1, 'B:', line2)

使用zip代替zip_longest来忽略末尾的奇数行。

{2}中的zip_longest函数名为izip_longest

答案 1 :(得分:3)

你可以这样做:

with open('myFile.txt') as fh:
  for line1 in fh:
    line2 = next(fh)

    # Code here can use line1 and line2.

如果您有奇数行,则可能需要在StopIteration的调用中注意next(fh)错误。 izip_longest的解决方案可能更能够避免这种需求。

答案 2 :(得分:1)

f = open("file")
content = f.readlines()
print content[0] #You can choose lines from a list.
print content[1]

这是一种方法。现在,您可以使用for循环遍历列表并使用它执行任何操作,或者明确选择行。