python程序輸出無內(nèi)容怎么辦-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了python程序輸出無內(nèi)容怎么辦,內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會有收獲的,下面讓小編帶大家一起來看看吧。

“專業(yè)、務(wù)實、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個人一直以來堅持追求的企業(yè)文化。 成都創(chuàng)新互聯(lián)公司是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、軟件開發(fā)、設(shè)計服務(wù)業(yè)務(wù)。我們始終堅持以客戶需求為導(dǎo)向,結(jié)合用戶體驗與視覺傳達(dá),提供有針對性的項目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場,引領(lǐng)市場!

問題緣由

某項目中使用python腳本方式將日志文件中的數(shù)據(jù)持續(xù)的轉(zhuǎn)換格式輸出到另一文件中以供其他日志分析應(yīng)用使用。但是當(dāng)后臺運行采取重定向方式輸出到某一文件時,發(fā)現(xiàn)并沒有內(nèi)容輸出,命令如下:

python xxx.py > xxx.log &

測試發(fā)現(xiàn),當(dāng)前臺直接輸出到終端時正常,使用后臺運行重定向的方式輸出到文件中時無法輸出。

解決辦法

發(fā)現(xiàn)是在程序運行時,輸出有緩存,只有當(dāng)程序運行結(jié)束或者緩沖區(qū)滿后才會輸出。因為程序是一致在運行的所以不可能等待程序結(jié)束在輸出。并且要求是有實時性的所以等緩沖區(qū)滿輸出的方式也不可取。

所以采用在python運行時加上-u參數(shù),如:

python -u xxx.py > xxx.log &

-u參數(shù)的意義是不使用緩沖的方式輸入輸出

詳細(xì)如下:

Force stdin, stdout and stderr to be totally unbuffered. On systems where it matters, also put stdin, stdout and stderr in binary mode. Note that there is internal buffering in xreadlines(), readlines() and file-object iterators (“for line in sys.stdin”) which is not influenced by this option. To work around this, you will want to use “sys.stdin.readline()” inside a “while 1:” loop.

補充知識:python中運行代碼時沒有報錯但是也沒有輸出而且還有exit code 0的結(jié)束標(biāo)志

如下所示:

f=open("passwd.txt",'r')
print (f.read(4))
f.close()

名稱欄目:python程序輸出無內(nèi)容怎么辦-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://bm7419.com/article42/ighec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)云服務(wù)器、搜索引擎優(yōu)化、App開發(fā)全網(wǎng)營銷推廣、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站