出力を stdout に書き込む Python3 スクリプトがありますが、その出力を head または tail にパイプするとエラーが発生します。head
以下のサンプル出力では、要求どおりに最初の 2 行の出力が返されていることに注意してください。
> ./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
エラー メッセージに含まれているコード以外にスクリプトのコードが必要な場合はお知らせください。何が関係するのかわかりません。