Python – 何时使用文件vs打开
文件和Python打开有什么区别? 我应该什么时候使用哪一个? (说我在2.5)
你应该总是使用open()
。
正如文档所述:
当打开文件时,最好使用open()而不是直接调用这个构造函数。 文件更适合于typestesting(例如,编写“isinstance(f,file)”)。
此外,自Python 3.0以来, file()
已被删除 。
原因有两个:“应该有一个办法做”的Python哲学, file
正在消失。
file
是实际的types(使用例如file('myfile.txt')
正在调用它的构造函数)。 open
是一个将返回文件对象的工厂函数。
在python 3.0中, file
将从一个内置版本转变为由io
库中的多个类实现(与带有缓冲读取器的Java有些类似)
file()
是一个types,就像一个int或一个列表。 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)
正如你所看到的,两者都有一个很好的理由存在,并且两者都有明确的用例。
在function上,两者是相同的。 open
会调用file
,所以目前的差异是一个风格的问题。 Python文档build议使用open
。
打开文件时,最好使用open(),而不是直接调用文件构造函数。
原因是在将来的版本中它们不能保证是相同的( open
将变成一个工厂函数,它根据打开的path返回不同types的对象)。
只有使用open()打开文件。 文件()实际上是在3.0中被删除,目前已经被弃用了。 他们之间有一种奇怪的关系,但是file()现在正在进行,所以没有必要担心了。
以下是来自Python 2.6文档。 [括号]由我添加。
打开文件时,最好使用open(),而不是直接调用这个[file()]构造函数。 文件更适合于typestesting(例如,写入isinstance(f,file)
据Van Rossum先生介绍,尽pipeopen()当前是file()的别名,但应该使用open(),因为这可能会在将来发生变化。