Python中的 file open 有什么区别?我什么时候应该使用哪一个? (说我在2.5)

有帮助吗?

解决方案

您应该始终使用 open()

文档指出:

  

打开文件时,最好是   使用open()而不是调用它   构造函数直接。档案更多   适合类型测试(例如,   写“isinstance(f,file)”)。

此外, file() 已被从Python 3.0开始删除

其他提示

两个原因:“应该有一种方法可以做到”的蟒蛇哲学。 file 即将消失。

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

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

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

这是你应该使用open的一个例子:

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

这是您何时应该使用文件的示例:

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

正如您所看到的,存在两者的充分理由,以及两者的明确用例。

功能上,两者是相同的; open 无论如何都会调用 file ,所以目前不同的是风格问题。 Python文档建议使用 open

  

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

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

只能使用open()打开文件。 file()实际上是在3.0中删除的,目前已弃用。他们有一种奇怪的关系,但file()现在正在进行,所以不用再担心了。

以下内容来自Python 2.6文档。 [括号内容]由我添加。

  

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

根据Van Rossum先生的说法,尽管open()目前是file()的别名,但你应该使用open(),因为这可能会在将来发生变化。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top