How to prevent BrokenPipeError when doing a flush in Python?
Question: Is there a way to use flush=True for the print() function without getting the BrokenPipeError ? I have a script pipe.py : for i in range(4000): print(i) I call it like this from a Unix command line: python3 pipe.py | head -n3000 And it returns: 0 1 2 So does this script: import sys for i in range(4000): print(i) sys.stdout.flush() However, when I run this script and pipe it to head -n3000 : for i in range(4000): print(i, flush=True) Then I get this error: print(i, flush=True) BrokenPipeError: [Errno 32] Broken pipe Exception BrokenPipeError: BrokenPipeError(32, 'Broken pipe') in <_io