導航:首頁 > 編程語言 > 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相關的資料

熱點內容
登錄伺服器發生錯誤怎麼回事 瀏覽:270
松下空氣能壓縮機 瀏覽:936
萬能源碼播放器 瀏覽:966
串口伺服器如何轉發 瀏覽:357
如何下載Ck電影部app 瀏覽:744
解壓文具筆袋簡單 瀏覽:288
android百度坐標轉換 瀏覽:367
文件公私鑰加密傳輸 瀏覽:665
python矩陣維度 瀏覽:927
華佗舌診源碼 瀏覽:897
解壓壓縮包有一個錯誤怎麼辦 瀏覽:966
怎麼在手機上設立文件夾 瀏覽:232
雲幫手伺服器搭建教程 瀏覽:785
惠普默認存在哪個文件夾 瀏覽:493
建立桌面圖標文件夾 瀏覽:86
python怎麼跳過異常繼續執行 瀏覽:315
單片機驅動可控硅 瀏覽:294
遼寧沈陽最新代理伺服器ip地址 瀏覽:565
如何安裝用友通伺服器 瀏覽:827
python怎麼將輸入轉為整數類型 瀏覽:608