某日,小編在寫python代碼的時候,出現(xiàn)了一個報錯:RuntimeError: lost sys.stdout。小編在搜尋解決方案后解決了這個問題,由此引發(fā)了一個思考:同類的問題應(yīng)該如何解決和避免。于是就有了接下來的這篇文章。接下來小編就以“python報錯lost sys.stdou如何解決”為例,帶你了解python文件命名的規(guī)范吧。
錯誤出現(xiàn)
小編在寫某個python代碼的時候,運行報錯:
報錯的意思是,丟失?sys.stdout
?。然后小編運行了該文件夾下的所有代碼,都出現(xiàn)了這樣的報錯。
求助大佬后才知道,我的?io
?模塊被替換掉了,然后小編望向自己的項目文件夾,發(fā)現(xiàn)了罪魁禍首:
沒錯,就是那個名為?io
?的模塊,小編曾經(jīng)圖一時爽快,把某個python文件命名為io了,然后他替換了內(nèi)置的?io
?模塊,然后所有涉及到?io
?模塊的操作都不能使用了。。。
解決方法
既然是名字的問題,那么改掉就可以了,在將那個文件改了個名后,我的項目又恢復了正常運行。
由此引發(fā)出的思考
既然改名叫io,?io
?模塊就不能運行,那么改名叫requests,是不是就不能運行?ruquests
?模塊了?在一番嘗試后發(fā)現(xiàn)確實如此。原理很簡單:python在搜尋包的時候會先搜尋項目內(nèi)有沒有該模塊,如果有就用項目內(nèi)的模塊,如果沒有就到稱為sys.path的list中尋找,所有的python自帶的模塊和pip安裝第三方模塊都在這里。
如何避免
根據(jù)上述結(jié)論,我們可以得到一個很簡單的避免方法——既然命名和模塊相同會產(chǎn)生這樣的錯誤,那么我們在命名的時候只要規(guī)避這些模塊名就不會出現(xiàn)這樣的錯誤。這就引出了python文件命名的規(guī)范——不要用模塊名命名py文件?。?!
小結(jié)
以上就是以“python報錯lost sys.stdou如何解決”為例介紹的python文件命名的規(guī)范。之所以會出現(xiàn)這樣的原因,小編犯懶是一點,但更多的原因是小編不知道這樣的小知識點。但又是為什么小編會不知道這樣的小知識點呢?主要還是因為小編的python只是自學,雖然很多知識點小編可以從掌握的其他語言中學習而來,但是這個小知識點小編的確沒遇到過。這就是自學python的缺陷。W3Cschool上的python編程課有一系列系統(tǒng)全面的學習python的課程,讓你少走彎路錯路,直走成功大道!
更多精彩內(nèi)容盡在python編程獅。