如何在Python中过滤文本I/O流

Uri*_*nta 5 python stream python-3.x python-textprocessing

给定文本I/O流(例如来自open()StringIO()),如何创建另一个流来过滤掉与特定模式匹配的行,而不首先读取整个输入流?我知道我可以很容易地得到一个可迭代的(line for line in input if filter(line)),但我想要一个可搜索的流.我也理解,即使底层流允许随机访问,搜索也需要读取整个流,但这仍然比读取整个文件更好StringIO("".join(line for line in input if filter(line))).

(作为一个附加组件,如何记住重复搜索的指针将受到欢迎!)