某日,小编在写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字节宝。