久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

python程序輸出無內(nèi)容的解決方式

瀏覽:2日期:2022-07-30 15:29:48

問題緣由

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

python xxx.py > xxx.log &

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

解決辦法

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

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

python -u xxx.py > xxx.log &

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

詳細如下:

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的結束標志

如下所示:

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

這是想要執(zhí)行的代碼

passwd.txt中的內(nèi)容

ntp:x:38:38::/etc/ntp:/sbin/nologinapache:x:48:48:Apache:/var/www:/sbin/nologinsaslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologinpostfix:x:89:89::/var/spool/postfix:/sbin/nologingdm:x:42:42::/var/lib/gdm:/sbin/nologinpulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin

但是輸出的結果是

Process finished with exit code 0

后來排查發(fā)現(xiàn)原來是解釋器的問題

我之前使用的解釋器是pycharm提供的虛擬解釋器

#####如何查看解釋器

點file?>new projects

python程序輸出無內(nèi)容的解決方式

如果選擇的是2就是使用了pycharm提供的虛擬解釋器,又因為passwd.txt文件不是在虛擬環(huán)境中的所以就沒有輸出。

點擊3然后選擇你已經(jīng)下載好的解釋器即可。

以上這篇python程序輸出無內(nèi)容的解決方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 康平县| 福建省| 郎溪县| 海阳市| 高安市| 旌德县| 靖远县| 肥西县| 积石山| 开平市| 定安县| 尼玛县| 南川市| 景泰县| 稻城县| 德格县| 南和县| 永州市| 叶城县| 桃园县| 监利县| 溧阳市| 黄山市| 故城县| 西乌珠穆沁旗| 木兰县| 北川| 阿拉善左旗| 奉化市| 文安县| 中山市| 遂平县| 西贡区| 泗阳县| 栖霞市| 姜堰市| 乌鲁木齐县| 伊通| 靖安县| 砚山县| 汉源县|