导航:首页 > 编程语言 > python368

python368

发布时间:2024-10-15 06:16:57

1. python出现broken pipe错误

今天写 Python2 程序遇到一个问题,为说明这个问题,写一个演示程序,它的代码如下:

import sys

for line in sys.stdin:
print line.strip('\n')

该演示程序的功能就是从标准输入读取内容输出到标准输出,当以如下方式使用时程序会报错:

ps -elf | python test_pipe.py | head -n 10

报错内容如下:

Traceback (most recent call last):
File "test_pipe.py", line 6, in <mole>
print line.strip('\n')
IOError: [Errno 32] Broken pipe

而将head命令换成tail命令则不会报错。

网上搜索了下,找到了解决方法。解决方法如下:

import sys
from signal import signal, SIGPIPE, SIG_DFL

# 让 python 忽略 SIGPIPE 信号,并且不抛出异常
signal(SIGPIPE,SIG_DFL)

for line in sys.stdin:
print line.strip('\n')

该问题产生的原因是:当head程序从管道的一端读取到足够的数据后就会关闭管道,而python程序正在管道的另一端写入,于是python程序就会接收到SIGPIPE信号使程序异常退出。而tail命令是等管道写入完成后再关闭管道,所以不会有这个问题。

阅读全文

与python368相关的资料

热点内容
命令式接口 浏览:399
电脑服务器域名地址怎么查 浏览:340
什么行业要用编程 浏览:297
三洋立风柜压缩机 浏览:296
微拍app为什么下载不了了 浏览:257
非常好的期货5分钟公式源码 浏览:4
linuxcentos7安装 浏览:691
华为网盘文件夹加密 浏览:74
安卓手机什么真人游戏好玩 浏览:772
昆山加密软件需求 浏览:270
苹果照片压缩包怎么打开 浏览:796
检测温湿度和二氧化碳的单片机 浏览:964
安卓手机雨滴怎么隐藏 浏览:587
pdf文件转换器word 浏览:987
vscodepython模块方法 浏览:344
如何知道服务器有什么漏洞 浏览:902
java电商订单支付源码 浏览:102
android手机鼠标 浏览:465
php支付项目经验 浏览:931
中国人民银行在哪里下载app 浏览:562