6

我在这里看到过这个问题,但给出的答案在我的情况下不起作用,并且被标记为重复。

我挖掘了源代码 ( /usr/lib/python3.2/fileinput.py) 并看到它readlines(bufsize)在内部用于加载缓冲区。没有外壳或其他管道恶作剧。

4

1 回答 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!")
于 2013-02-21T21:13:48.743 回答