Почему мой сценарий Python3 препятствует передаче своего вывода голове или хвосту (модуль sys)?

У меня есть сценарий Python3, который записывает свой вывод в stdout, но он жалуется, когда я передаю этот вывод в голову или хвост. Обратите внимание на пример вывода ниже, что это вроде работает, в том, чтоhead возвращает первые две строки вывода в соответствии с запросом.

> ./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

Напротив, у скрипта нет проблем с выводом его в awk, как показано ниже.

> ./script.py '../Testdata/*indels.ss' -m 5 | awk 'NR < 3 {print $0}'                                                                              ~/Databases/Avian_genomes/Sandbox/combined
xread
2999 50

Дайте мне знать, если вам нужен какой-то код из сценария, помимо того, что содержится в сообщении об ошибке. Я не уверен, что будет актуально.

Ответы на вопрос(2)

Ваш ответ на вопрос