Python 从文件行分组成对的文件中获取输入

Python 从文件行分组成对的文件中获取输入,python,file-io,Python,File Io,所以我必须读一个文件,每次我读这个文件时,我必须把行成对地存储在变量中,并用输入数据做各种事情 我的问题是,我如何将这些行成对地“分组”,以便,例如,如果我在第一行选择三个最喜欢的数字,在第二行选择他们的名字和姓氏,那么整个文件都会这样做?为了简单起见,我将其设置为只打印出我试图存储的内容 array = [] userInput = sys.stdin array.append(userInput.readline().strip()) firstName,lastName = map(str

所以我必须读一个文件,每次我读这个文件时,我必须把行成对地存储在变量中,并用输入数据做各种事情

我的问题是,我如何将这些行成对地“分组”,以便,例如,如果我在第一行选择三个最喜欢的数字,在第二行选择他们的名字和姓氏,那么整个文件都会这样做?为了简单起见,我将其设置为只打印出我试图存储的内容

array = []
userInput = sys.stdin
array.append(userInput.readline().strip())
firstName,lastName = map(str,userInput.readline().split(" "))

print(firstName)
print(lastName)
print(array)
输入的一个例子是:

1 2 3
John Doe
4 5 6
Queen Mary 
John
Doe
['1 2 3']
Queen
Mary
['4 5 6']
文本文件中的输出示例如下:

1 2 3
John Doe
4 5 6
Queen Mary 
John
Doe
['1 2 3']
Queen
Mary
['4 5 6']

您可以在循环中两次
readline
,并将它们都附加到数据结构中,等等:

伪码 您可能需要处理异常


读取后,您可以按自己喜欢的方式处理每组两行数据。

高效内存解决方案

使用一个切换标志,您可以每隔一行切换一次,并将内容打印到输出文件(因此,您的内存一次只能保存mximum的内容2行):


已经是第一行;您只需调用一次
f.readline()
(很抱歉,我意识到我的第一条评论不太准确)。请参阅中的
grouper
配方。
from itertools import zip_longest

def read_lines_in_batches(file_path, n = 1):
    with open(file_path) as fh:
        fhs = [fh] * n
        for batch in zip_longest(*fhs):
            yield [line for line in batch if line]

for lines in read_lines_in_batches('foo/bar.txt', 3):
    print(lines)