17
Python 2支持无缓冲的文本I/O。为什么文本I/O必须在python 3中缓冲?
相同的方法在python 3中不起作用。为什么禁用了无缓冲的文本I/O?
> import sys
> sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
builtins.ValueError: can't have unbuffered text I/O
二进制仍然正常工作:
> sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0) # works fine
至少在阅读中,我怀疑它是与文字是unicode的,让字节!=字符。如果底层字节流是utf-8编码的,则单个字符是可变字节数,因此在读完完整字符后必须有一个缓冲区来包含剩余字节。我认为有一个新的io模块(和上面的sys.stdout可能是一个IO类实例)。 – 2014-11-22 01:01:58