我在这里问过这个问题,但是给出的答案在我的案例中没有用,并且被标记为重复。
python -u
does not work for stdin
in Python 3. sys.stdin = sys.stdin.detach()
会抛出ValueError: underlying buffer has been detached
。stdin
输入和其他用作流的文件。FileInput(openhook=hook_nobuf)
and using open(buffering=0)
in the hook. 我挖掘了源代码(/usr/lib/python3.2/fileinput.py
),发现内部正在使用readlines(bufsize)
来加载缓冲区。没有贝壳或其他管道诡计。
答案 0 :(得分:5)
对我有用的只是设置FileInput(bufsize=1)
。 file.readlines()
文档确实声明“可选的大小参数,如果给定,则是返回行中总字节数的近似界限。”在实践中,我每次只获得一个新行,而不是必须填充缓冲区。
with fileinput.input(bufsize=1) as f:
for line in f:
print("One line in, one line out!")