gpt4 book ai didi

python - 为什么我的 Python3 脚本在将其输出通过管道传输到 head 或 tail(sys 模块)时犹豫不决?

转载 作者:太空狗 更新时间:2023-10-29 17:26:41 25 4
gpt4 key购买 nike

我有一个 Python3 脚本将其输出写入标准输出,但当我将该输出通过管道传输到头或尾时它会报错。请注意,在下面的示例输出中它可以正常工作,因为 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

如果您需要脚本中的一些代码而不是错误消息中包含的代码,请告诉我。我不确定什么是相关的。

最佳答案

./script.py '../Testdata/*indels.ss' -m 5 | awk 'NR >= 3 {exit} 1'

将显示与 head -2 相同的行为。

您可以将 SIGPIPE 处理程序设置为安静地终止您的程序的处理程序:

import signal
signal.signal(signal.SIGPIPE, signal.SIG_DFL)

关于python - 为什么我的 Python3 脚本在将其输出通过管道传输到 head 或 tail(sys 模块)时犹豫不决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11423225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com