Gre*_*ory 13 python pipe python-3.x
我有一个Python3脚本将其输出写入stdout,但是当我将输出传输到head或tail时,它会抱怨.请注意下面的示例输出中它的工作方式,即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
Run Code Online (Sandbox Code Playgroud)
相比之下,脚本没有问题,其输出通过管道传输到awk,如下所示.
> ./script.py '../Testdata/*indels.ss' -m 5 | awk 'NR < 3 {print $0}' ~/Databases/Avian_genomes/Sandbox/combined
xread
2999 50
Run Code Online (Sandbox Code Playgroud)
如果您需要脚本中的某些代码超出错误消息中包含的内容,请告诉我.我不确定什么是相关的.
eph*_*ent 13
./script.py '../Testdata/*indels.ss' -m 5 | awk 'NR >= 3 {exit} 1'
Run Code Online (Sandbox Code Playgroud)
会表现出同样的行为head -2
.
您可以将SIGPIPE
处理程序设置为悄然杀死程序的处理程序:
import signal
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3503 次 |
最近记录: |