Python 2 ha supportato l'I/O di testo non bufferato.Perché l'I/O di testo deve essere memorizzato nel buffer in python 3?
Lo stesso approccio non funziona in python 3. Perché l'I/O di testo non bufferizzato è disabilitato?
> import sys
> sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
builtins.ValueError: can't have unbuffered text I/O
Il binario funziona ancora bene:
> sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0) # works fine
Almeno per la lettura, ho il sospetto che ha qualcosa a che fare con testi facenti unicode, in modo che byte! = Char. Se il flusso di byte sottostante è codificato in utf-8, un singolo carattere è un numero variabile di byte, quindi deve essere presente un buffer per contenere i byte rimanenti dopo la lettura dei caratteri completi. Presumo che ci fosse un pep per il nuovo modulo io (e sys.stdout sopra è probabilmente un'istanza di classe IO). –