将文件对象推进多行作为跳过空行和包含字符串的行的一种方式

Advance a file object more than one line as a way of skipping blank lines and lines containing strings

next() 迭代到文件中的下一行,但是如果您想迭代 2 或 3 行然后读取该文件怎么办。示例:假设您要将一个数字添加到文件中的金额。但为了获得该数字,您必须跳过包含 2 行纯字母的文件。

我试过 amount = next(); next() 之类的方法但没有用,或者我使用不当。

有什么想法吗?

要前进多行,循环调用next

for _ in range(times_to_advance):
    next(file_object)

正如@MartijnPieters 在评论中指出的那样,此解决方案不是特别有效。它的主要优点是简单。

如果您主要关心的是性能,则应使用 itertools 文档的 consume() recipe 中的代码:

from itertools import islice
next(islice(file_object, times_to_advance, times_to_advance), None)

例如

def skip_n_items(n, iterator):
    for _ in range(n): next(iterator)

然后当你想 "skip 2 lines then get the third one"

skip_n_items(2, thefile)
amount = next(thefile)

(例如在 with open('the.file') as thefile: 块内)。