New submission from Joe Borg: I'm in need of an unbuffered stdin for Python3. Using the '-u' flag worked fine in Python2. But, it seems, Python3's stdin is always buffered; as seen in http://bugs.python.org/issue4705.
This is not always desirable. For example: #!/bin/python3 import os, subprocess, time with open("%s/unbuffered_test.log" % (os.getenv("HOME")), "w") as f: with subprocess.Popen(["%s/unbuffered_test.sh" % (os.getenv("HOME"))], stdin=subprocess.PIPE, stdout=f, stderr=f) as p: p.stdin.write(bytes("test\n", encoding="utf-8")) time.sleep(10) Where unbuffered_test.sh is: #!/bin/sh read INPUT echo $INPUT exit 0 Running with -u in Python2 sees the log file populated before the 10 seconds are up. This isn't the case in Python3. This making controlling applications, using subprocess, basically impossible; without putting p.stdin.flush() after each command (which does work in the example above). I ran this example in Python3.3.2. ---------- messages: 196359 nosy: Joe.Borg priority: normal severity: normal status: open title: Python3 unbuffered stdin versions: Python 3.1, Python 3.2, Python 3.3, Python 3.4, Python 3.5 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue18868> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com