【发布时间】:2020-02-10 15:46:53
【问题描述】:
我正在循环读取一个非常大的 txt 文件。 迭代特定行时,存在条件,根据满足哪些条件,我想返回并从另一个起始行号再次开始迭代文件。
例如:
with open(filename) as f:
for inputline in f:
if inputline.strip() == 'abc':
#goto line 3 and start the loop again
print(inputline.strip())
假设输入文件是:
1
2
3
4
5
abc
6
7
输出应该是:
1
2
3
4
5
3
4
5
3
4
5.....
我知道这个输入最终会进入一个无限循环并且永远不会终止。但我仍然想知道如何使用简单的 readline 来实现这一点。由于每行的长度不统一,我无法使用 seek 命令。
【问题讨论】:
-
你不能回去 - 你宁愿在内存中记住以前的行或在行中计算字符以保留可以与
seek()一起使用的行的位置 -
“从另一个起始行号再次迭代文件”,当你说这总是一个特定的行还是会改变?
-
@nithin11 - 行会根据某些条件而变化。
-
@user2778822 因此对于 thisinputline.strip() == 'abc' 条件,它进入第 3 行,而对于其他一些条件,它进入其他行。是这样的吗?
-
@nithin11 是的,没错
标签: python python-3.x readline readlines