Python中file
和open
之间有什么区别?我什么时候应该使用哪一个? (说我在2.5)
答案 0 :(得分:152)
您应始终使用open()
。
正如documentation所述:
打开文件时,最好是 使用open()而不是调用它 构造函数直接。档案更多 适合类型测试(例如, 写“isinstance(f,file)”)。
此外,自Python 3.0以来file()
has been removed。
答案 1 :(得分:32)
两个原因:蟒蛇哲学“应该有一种方法去做”而file
正在消失。
file
是实际类型(使用例如file('myfile.txt')
调用其构造函数)。 open
是一个返回文件对象的工厂函数。
在python 3.0中file
将从内置转变为由io
库中的多个类实现(有点类似于带有缓冲读取器的Java等)
答案 2 :(得分:19)
file()
是一种类型,如int或列表。 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)
正如您所看到的,存在两者的充分理由,以及两者的明确用例。
答案 3 :(得分:7)
功能上,两者是相同的; open
无论如何都会调用file
,所以目前差异只是风格问题。 Python docs建议使用open
。
打开文件时,最好使用open()而不是直接调用文件构造函数。
原因是在将来的版本中它们不能保证是相同的(open
将成为工厂函数,它根据它打开的路径返回不同类型的对象。
答案 4 :(得分:4)
只能使用open()打开文件。 file()实际上是在3.0中删除的,目前已弃用。他们有一种奇怪的关系,但file()现在正在进行,所以不用再担心了。
以下内容来自Python 2.6文档。 [括号内容]由我添加。
打开文件时,最好使用open()而不是直接调用此[file()]构造函数。 file更适合于类型测试(例如,写isinstance(f,file)
答案 5 :(得分:2)
根据Van Rossum先生的说法,尽管open()目前是file()的别名,但你应该使用open(),因为这可能会在将来发生变化。