I have a Python3 script that writes its output to stdout, but it complains when I pipe that output into head or tail. Note in the sample output below that it sort of works, in that head
is returning the first two lines of output as requested.
> ./script.py '../Testdata/*indels.ss' -m 5 | head -2 ~/Databases/Avian_genomes/Sandbox/combined
xread
2999 50
Traceback (most recent call last):
File "./new.py", line 194, in <module>
sys.stdout.write(lineout)
IOError: [Errno 32] Broken pipe
Exception IOError: IOError(32, 'Broken pipe') in <_io.TextIOWrapper name='<stdout>' mode='w' encoding='UTF-8'> ignored
In contrast, the script has no problem with its output being piped to awk as below.
> ./script.py '../Testdata/*indels.ss' -m 5 | awk 'NR < 3 {print $0}' ~/Databases/Avian_genomes/Sandbox/combined
xread
2999 50
Let me know if you need some code from the script beyond what's contained in the error message. I'm not sure what would be relevant.
prog.py | othercmd
seems to be the most active version of this question. – Retorsion