如题,这三者有什么区别?
包括它们对Python不同版本的支持,各自的使用场景,将来的趋势(好像社区正在讨论废弃codecs.open)
如题,这三者有什么区别?
包括它们对Python不同版本的支持,各自的使用场景,将来的趋势(好像社区正在讨论废弃codecs.open)
Python3:io.open() function is a alias for the builtin open() function。https://docs.python.org/3.6/l...
1 回答10.1k 阅读✓ 已解决
4 回答4k 阅读✓ 已解决
2 回答4k 阅读✓ 已解决
4 回答3.5k 阅读✓ 已解决
3 回答4.7k 阅读
3 回答1.8k 阅读✓ 已解决
1 回答4.3k 阅读✓ 已解决
Python2和3的糊涂账……
最早的时候,只有
open
。你知道的,Python 2的编码多么蛋疼,所以,就有了
codecs.open
.至于
io.open
,其实是因为Python 2的open
实际上是file
模块提供的,而Python 3的open
是io模块提供的。然后,Python 2.6引入了这个Python 3的特性,叫做io.open
,以便和原来的open
相区分。但是,这个Python 2.6的
io.open
是有问题的,在一些情况下表现很怪异。Python 2.7的io.open
就正常了。个人建议:
Python3直接用
open
。Python2.x下用
codecs.open
,特别是有中文的情况,然后也可以避免踩到2.6下面io.open
的坑。如果希望代码同时兼容Python2和Python3,那么推荐用
codecs.open
。关于
codecs.open
废弃的讨论……这个,我只能说,虽然有PEP 404,但是还是有人想要Python 2.8,Python 3都出来这么久了,但是实际采用率呢?未来的事情谁也说不准。