python报错lost sys.stdou如何解决?——python文件命名的禁忌!

2021-06-19 11:38:01 浏览数 (5340)

某日,小编在写python代码的时候,出现了一个报错:RuntimeError: lost sys.stdout。小编在搜寻解决方案后解决了这个问题,由此引发了一个思考:同类的问题应该如何解决和避免。于是就有了接下来的这篇文章。接下来小编就以“python报错lost sys.stdou如何解决”为例,带你了解python文件命名的规范吧。

错误出现

小编在写某个python代码的时候,运行报错:

报错

报错的意思是,丢失​sys.stdout​。然后小编运行了该文件夹下的所有代码,都出现了这样的报错。

求助大佬后才知道,我的​io​模块被替换掉了,然后小编望向自己的项目文件夹,发现了罪魁祸首:

项目文件夹

没错,就是那个名为​io​的模块,小编曾经图一时爽快,把某个python文件命名为io了,然后他替换了内置的​io​模块,然后所有涉及到​io​模块的操作都不能使用了。。。

解决方法

既然是名字的问题,那么改掉就可以了,在将那个文件改了个名后,我的项目又恢复了正常运行。

由此引发出的思考

既然改名叫io,​io​模块就不能运行,那么改名叫requests,是不是就不能运行​ruquests​模块了?在一番尝试后发现确实如此。原理很简单:python在搜寻包的时候会先搜寻项目内有没有该模块,如果有就用项目内的模块,如果没有就到称为sys.path的list中寻找,所有的python自带的模块和pip安装第三方模块都在这里。

如何避免

根据上述结论,我们可以得到一个很简单的避免方法——既然命名和模块相同会产生这样的错误,那么我们在命名的时候只要规避这些模块名就不会出现这样的错误。这就引出了python文件命名的规范——不要用模块名命名py文件!!!

小结

以上就是以“python报错lost sys.stdou如何解决”为例介绍的python文件命名的规范。之所以会出现这样的原因,小编犯懒是一点,但更多的原因是小编不知道这样的小知识点。但又是为什么小编会不知道这样的小知识点呢?主要还是因为小编的python只是自学,虽然很多知识点小编可以从掌握的其他语言中学习而来,但是这个小知识点小编的确没遇到过。这就是自学python的缺陷。W3Cschool上的python编程课有一系列系统全面的学习python的课程,让你少走弯路错路,直走成功大道!

更多精彩内容尽在python编程狮