Python 2 obsługuje wejścia/wyjścia niebuforowane tekstu.Dlaczego tekstowe we/wy muszą być buforowane w pythonie 3?
To samo podejście nie działa w pythonie 3. Dlaczego odblokowano niebuforowane operacje we/wy tekstów?
> import sys
> sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
builtins.ValueError: can't have unbuffered text I/O
binarny nadal działa bez zarzutu:
> sys.stdout = os.fdopen(sys.stdout.fileno(), 'wb', 0) # works fine
Przynajmniej do czytania, podejrzewam, że to ma coś wspólnego z tekstem będącym Unicode, więc tym bajcie! = Char. Jeśli bazowy strumień bajtów jest zakodowany w utf-8, pojedynczy znak jest zmienną liczbą bajtów, więc musi być bufor, aby pomieścić pozostałe bajty po odczytaniu wszystkich znaków. Zakładam, że był nowy moduł dla io (i sys.stdout powyżej jest prawdopodobnie instancją klasy IO). –