I've seen this question asked here, but the answers given did not work in my case and was marked duplicate.
python -u does not work for stdin in Python 3.sys.stdin = sys.stdin.detach() throws a ValueError: underlying buffer has been detached.stdin inputs and other files being used as stream.FileInput(openhook=hook_nobuf) and using open(buffering=0) in the hook.I dug in the source code (/usr/lib/python3.2/fileinput.py) and saw that readlines(bufsize) was being used internally to load a buffer. No shell or other piping shenanigans.
What worked for me was simply setting FileInput(bufsize=1). The file.readlines() documentation does state "The optional size argument, if given, is an approximate bound on the total number of bytes in the lines returned." In practice, I get exactly one new line every time rather than having to fill a buffer.
with fileinput.input(bufsize=1) as f:
    for line in f:
        print("One line in, one line out!")
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With