如何在python中执行块循环

如何在python中执行块循环,python,Python,我有一个100行的文件。我正在把它读入python Input=[line.rstrip()用于打开的行(“Input.txt”)] 输入有100行,但我有一个函数,一次只能处理20行 我该如何做以下事情: 输入为行的(20行)的: 魔术功能(线条) 我想我要找的术语是分块还是迭代?但我觉得我搜索得不对,因为我找到的信息似乎比它应该的更复杂。尝试将主列表分为20个子列表,然后进行处理 Ex: Input = [line.rstrip() for line in open("input.txt")

我有一个100行的文件。我正在把它读入python

Input=[line.rstrip()用于打开的行(“Input.txt”)]

输入有100行,但我有一个函数,一次只能处理20行

我该如何做以下事情:

输入为行的(20行)的
:
魔术功能(线条)


我想我要找的术语是分块还是迭代?但我觉得我搜索得不对,因为我找到的信息似乎比它应该的更复杂。

尝试将主列表分为20个子列表,然后进行处理

Ex:

Input = [line.rstrip() for line in open("input.txt")]
InPut = [Input[line:line+20] for line in range(0, len(Input), 20)]
for chunk in Input:
    for line in chunk:
        #process

尝试将主列表分为20个子列表,然后进行处理

Ex:

Input = [line.rstrip() for line in open("input.txt")]
InPut = [Input[line:line+20] for line in range(0, len(Input), 20)]
for chunk in Input:
    for line in chunk:
        #process

如果您的文件很大,那么运行
Input=[line.rstrip()for line in open(“Input.txt”)]
将占用大量内存。最好在每次阅读20行的同时对其进行流式处理:

lines = []
for idx, l in enumerate(open("input.txt")):
    lines.append(l.rstrip())
    if (idx + 1) % 20 == 0:
        for line in lines:
            # process
        lines = []  # reset
# process any last remaining lines that wasn't caught in the modulo if
for line in lines:
    # process

如果您的文件很大,那么运行
Input=[line.rstrip()for line in open(“Input.txt”)]
将占用大量内存。最好在每次阅读20行的同时对其进行流式处理:

lines = []
for idx, l in enumerate(open("input.txt")):
    lines.append(l.rstrip())
    if (idx + 1) % 20 == 0:
        for line in lines:
            # process
        lines = []  # reset
# process any last remaining lines that wasn't caught in the modulo if
for line in lines:
    # process