App下載

python報錯lost sys.stdou如何解決?——python文件命名的禁忌!

猿友 2021-06-19 11:38:01 瀏覽數(shù) (4855)
反饋

某日,小編在寫python代碼的時候,出現(xiàn)了一個報錯:RuntimeError: lost sys.stdout。小編在搜尋解決方案后解決了這個問題,由此引發(fā)了一個思考:同類的問題應(yīng)該如何解決和避免。于是就有了接下來的這篇文章。接下來小編就以“python報錯lost sys.stdou如何解決”為例,帶你了解python文件命名的規(guī)范吧。

錯誤出現(xiàn)

小編在寫某個python代碼的時候,運(yùn)行報錯:

報錯

報錯的意思是,丟失?sys.stdout?。然后小編運(yùn)行了該文件夾下的所有代碼,都出現(xiàn)了這樣的報錯。

求助大佬后才知道,我的?io?模塊被替換掉了,然后小編望向自己的項(xiàng)目文件夾,發(fā)現(xiàn)了罪魁禍?zhǔn)祝?/p>

項(xiàng)目文件夾

沒錯,就是那個名為?io?的模塊,小編曾經(jīng)圖一時爽快,把某個python文件命名為io了,然后他替換了內(nèi)置的?io?模塊,然后所有涉及到?io?模塊的操作都不能使用了。。。

解決方法

既然是名字的問題,那么改掉就可以了,在將那個文件改了個名后,我的項(xiàng)目又恢復(fù)了正常運(yùn)行。

由此引發(fā)出的思考

既然改名叫io,?io?模塊就不能運(yùn)行,那么改名叫requests,是不是就不能運(yùn)行?ruquests?模塊了?在一番嘗試后發(fā)現(xiàn)確實(shí)如此。原理很簡單:python在搜尋包的時候會先搜尋項(xiàng)目內(nèi)有沒有該模塊,如果有就用項(xiàng)目內(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)這樣的原因,小編犯懶是一點(diǎn),但更多的原因是小編不知道這樣的小知識點(diǎn)。但又是為什么小編會不知道這樣的小知識點(diǎn)呢?主要還是因?yàn)樾【幍膒ython只是自學(xué),雖然很多知識點(diǎn)小編可以從掌握的其他語言中學(xué)習(xí)而來,但是這個小知識點(diǎn)小編的確沒遇到過。這就是自學(xué)python的缺陷。W3Cschool上的python編程課有一系列系統(tǒng)全面的學(xué)習(xí)python的課程,讓你少走彎路錯路,直走成功大道!

更多精彩內(nèi)容盡在python編程獅。


0 人點(diǎn)贊