将文件对象推进多行作为跳过空行和包含字符串的行的一种方式
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:
块内)。
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:
块内)。