最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

python代碼沒錯(cuò)但運(yùn)行不出來

來源:懂視網(wǎng) 責(zé)編:李贏贏 時(shí)間:2021-12-25 11:01:42
文檔

python代碼沒錯(cuò)但運(yùn)行不出來

python代碼沒錯(cuò)但運(yùn)行不出來的原因:某項(xiàng)目中使用python腳本方式將日志文件中的數(shù)據(jù)持續(xù)的轉(zhuǎn)換格式輸出到另一文件中以供其他日志分析應(yīng)用使用,但是當(dāng)后臺(tái)運(yùn)行采取重定向方式輸出到某一文件時(shí),發(fā)現(xiàn)并沒有內(nèi)容輸出,當(dāng)前臺(tái)直接輸出到終端時(shí)正常,使用后臺(tái)運(yùn)行重定向的方式輸出到文件中時(shí)無法輸出。
推薦度:
導(dǎo)讀python代碼沒錯(cuò)但運(yùn)行不出來的原因:某項(xiàng)目中使用python腳本方式將日志文件中的數(shù)據(jù)持續(xù)的轉(zhuǎn)換格式輸出到另一文件中以供其他日志分析應(yīng)用使用,但是當(dāng)后臺(tái)運(yùn)行采取重定向方式輸出到某一文件時(shí),發(fā)現(xiàn)并沒有內(nèi)容輸出,當(dāng)前臺(tái)直接輸出到終端時(shí)正常,使用后臺(tái)運(yùn)行重定向的方式輸出到文件中時(shí)無法輸出。

python代碼沒錯(cuò)但運(yùn)行不出來是什么原因呢?不知道的小伙伴來看看小編今天的分享吧!

1、python代碼沒錯(cuò)但運(yùn)行不出來的原因:

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

python xxx.py > xxx.log &

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

2、解決辦法:

發(fā)現(xiàn)是在程序運(yùn)行時(shí),輸出有緩存,只有當(dāng)程序運(yùn)行結(jié)束或者緩沖區(qū)滿后才會(huì)輸出。因?yàn)槌绦蚴且恢略谶\(yùn)行的所以不可能等待程序結(jié)束在輸出。并且要求是有實(shí)時(shí)性的所以等緩沖區(qū)滿輸出的方式也不可取。

所以采用在python運(yùn)行時(shí)加上-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.

補(bǔ)充知識(shí):python中運(yùn)行代碼時(shí)沒有報(bào)錯(cuò)但是也沒有輸出而且還有exit code 0的結(jié)束標(biāo)志

如下所示:

f=open("passwd.txt",'r')

print (f.read(4))

f.close()

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

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

ntp:x:38:38::/etc/ntp:/sbin/nologin

apache:x:48:48:Apache:/var/www:/sbin/nologin

saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin

postfix:x:89:89::/var/spool/postfix:/sbin/nologin

gdm:x:42:42::/var/lib/gdm:/sbin/nologin

pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin

但是輸出的結(jié)果是

Process finished with exit code 0

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

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

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

點(diǎn)file?C>new projects

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

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

以上就是小編今天的分享了,希望可以幫助到大家。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

python代碼沒錯(cuò)但運(yùn)行不出來

python代碼沒錯(cuò)但運(yùn)行不出來的原因:某項(xiàng)目中使用python腳本方式將日志文件中的數(shù)據(jù)持續(xù)的轉(zhuǎn)換格式輸出到另一文件中以供其他日志分析應(yīng)用使用,但是當(dāng)后臺(tái)運(yùn)行采取重定向方式輸出到某一文件時(shí),發(fā)現(xiàn)并沒有內(nèi)容輸出,當(dāng)前臺(tái)直接輸出到終端時(shí)正常,使用后臺(tái)運(yùn)行重定向的方式輸出到文件中時(shí)無法輸出。
推薦度:
標(biāo)簽: python代碼
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top