Python-何时使用 file vs open

在 Python 中 fileopen有什么区别?我应该什么时候用哪一个?(假设我是2.5分)

90814 次浏览

应该始终使用 open()

正如 文件指出的:

当打开一个文件,这是最好的 使用 open ()而不是调用这个 文件更多 适合于类型测试(例如, 写“ isinstance (f,file)”)。

另外,file() 已经被移除了是从 Python 3.0开始的。

在功能上,两者是相同的; open无论如何都会调用 file,所以目前的差异是风格问题。巨蟒文件推荐使用 open

在打开文件时,最好使用 open ()而不是直接调用文件构造函数。

原因是在未来的版本中,它们不能保证是相同的(open将成为一个工厂函数,它根据打开的路径返回不同类型的对象)。

两个原因: “应该有一种方法可以做到这一点”的蟒蛇哲学和 file正在消失。

file是实际的类型(例如,使用 file('myfile.txt')调用它的构造函数)。open是一个工厂函数,它将返回一个文件对象。

在 python 3.0中,file将从内置转变为由 io库中的多个类实现(有点类似于带有缓冲读取器的 Java,等等)

只在打开文件时使用 open ()。File ()实际上在3.0中已经被删除了,目前已经废弃了。他们之间有一种奇怪的关系,但 file ()现在正在运行,所以没有必要再担心了。

以下内容来自我添加的 Python 2.6 docs。

在打开文件时,最好使用 open ()而不是直接调用这个[ file ()]构造函数。File 更适合于类型测试(例如,编写 isinstance (f,file))

按照 Van Rossum 先生的说法,虽然 open ()目前是 file ()的别名,但是您应该使用 open () ,因为这在将来可能会改变。

file()是一种类型,类似于 int 或 list。open()是一个打开文件的函数,它将返回一个 file对象。

下面的例子说明了什么时候应该使用 open:

f = open(filename, 'r')
for line in f:
process(line)
f.close()

下面的例子说明了什么时候应该使用 file:

class LoggingFile(file):
def write(self, data):
sys.stderr.write("Wrote %d bytes\n" % len(data))
super(LoggingFile, self).write(data)

正如您所看到的,两者都存在是有充分理由的,而且两者都有明确的用例。