如何避免Python fileinput库中的缓冲

6 投票
1 回答
1524 浏览
提问于 2025-04-17 16:41

我看到这个问题在这里被问过,但给出的答案在我这儿都不管用,还被标记为重复问题。

我深入查看了源代码(/usr/lib/python3.2/fileinput.py),发现内部使用了 readlines(bufsize) 来加载缓冲区。没有使用任何 shell 或其他管道的操作。

1 个回答

5

对我有效的方法就是简单地设置 FileInput(bufsize=1)。在 file.readlines() 的说明中提到:“可选的大小参数,如果提供的话,是对返回行中总字节数的一个大致限制。”实际上,我每次都能准确地得到一行新内容,而不需要先填满一个缓冲区。

with fileinput.input(bufsize=1) as f:
    for line in f:
        print("One line in, one line out!")

撰写回答