io.open 与 python 中的 open 之间的区别

Posted

技术标签:

【中文标题】io.open 与 python 中的 open 之间的区别【英文标题】:Difference between io.open vs open in python 【发布时间】:2016-02-26 18:13:30 【问题描述】:

过去,codecsio 取代。尽管使用io.open 似乎更可取,但大多数入门python 课程仍然教授open

Difference between open and codecs.open in Python 有个问题,但 open 只是 io.open 的鸭子类型?

如果不是,为什么使用io.open 更好?为什么使用open 教学更容易?

在这篇文章 (http://code.activestate.com/lists/python-list/681909/) 中,Steven DAprano 说内置的 open 在后端使用 io.open那么我们是否都应该重构我们的代码以使用open 而不是io.open

除了向后兼容py2.x之外,还有什么理由在py3.0中使用io.open而不是open

【问题讨论】:

查看help(open),你会发现它和io.open()是一样的——甚至标题都写着Help on built-in function open in module io,也就是说,没有理由使用io.open() if你正在用 Python 3 编写程序。 @TimPietzcker, io.open 只是为了向后兼容,对吧?如果是这样,我应该开始更改python3的所有课程材料=) 是的,可能。它使从 2.x 到 3.x 的移植更容易,但如果您是从 3.x 开始,则没有必要让这变得更复杂。 【参考方案1】:

根据文档在 Python3 中的情况:

io.open(file, *[options]*)

这是内置 open() 函数的别名。

虽然内置的 open() 和相关的 io 模块是 处理编码文本文件的推荐方法,此模块 [即codecs] 提供了额外的实用函数和类 在处理二进制文件时允许使用更广泛的编解码器 文件

(粗体和斜体是我的编辑)

【讨论】:

以上是关于io.open 与 python 中的 open 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

Unity中lua 的 io.open() 文件路径的问题

使用 io.open 设置所有者+访问权限

Linux基本文件IO/open/write

Python第六周 学习笔记

IO01文件对象

Lua 转义字符