python代碼沒錯但運行不出來, Python代碼沒錯,但是為什么運行不了?不知道小伙伴們今天來看看邊肖的分享吧!
1.python代碼正確卻無法運行的原因:
在項目中,python腳本用于不斷將日志文件中的數(shù)據(jù)轉(zhuǎn)換為另一個文件,以供其他日志分析應(yīng)用程序使用。但是當(dāng)后臺操作重定向到一個文件時,發(fā)現(xiàn)沒有內(nèi)容輸出。該命令如下所示:
python xxx.py xxx.log
測試顯示,直接輸出到終端時前臺正常,后臺運行重定向輸出到文件時無法輸出。
2.解決方案:
發(fā)現(xiàn)程序運行時輸出是緩存的,只有程序運行或緩沖區(qū)滿了才會輸出。因為程序一直在運行,所以不可能等程序結(jié)束再輸出。而且要求是實時的,不建議等緩沖區(qū)滿了再輸出。
所以在python運行時添加-u參數(shù),比如:
python -u xxx.py xxx.log
-u參數(shù)的意思是輸入和輸出不需要緩沖。
詳情如下:
Forces stdin, stdout and stderr to be completely unbuffered. On important systems, stdin, stdout and stderr are also put into binary mode. Note that there is an internal buffer in xreadlines (), readlines () and file object iterator (for lines in sys.stdin), which is not affected by this option. To solve this problem, you need to use sys.stdin.readline () in the while 1: "loop.
補充知識:用python運行代碼沒有錯誤,但是沒有輸出,有退出代碼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
后來調(diào)查發(fā)現(xiàn)是翻譯的問題。
我之前用的解釋器是pycharm提供的虛擬解釋器。
# # # #如何查看解釋器
Point files? Cnew project
如果選擇2,則使用pycharm提供的虛擬解釋器,因為passwd.txt文件不在虛擬環(huán)境中,所以沒有輸出。
點擊3并選擇您下載的解釋器。
python代碼沒錯但運行不出來,以上就是本文為您收集整理的python代碼沒錯但運行不出來最新內(nèi)容,希望能幫到您!更多相關(guān)內(nèi)容歡迎關(guān)注。