是开放的(文件,“wt”或“rt”)不同的对象?

时间:2013-06-15 21:02:13

标签: python file-io immutability mutable

当你这样做时:

file = open("my file","wt")

file = open("my file" , "rt")

这两个都创建我们使用文件方法的文件对象。但他们是否创建了不同的文件对象?如果他们正在创建不同的文件对象,那么可以说“wt”是可变的,而“rt”是不可变的吗?

2 个答案:

答案 0 :(得分:2)

不,这不公平。您正在创建相同标准file类型的实例,该实例代理对操作系统的文件操作调用。该模式定义了操作系统将允许您执行的操作。

如果使用相同的文件名或不同的文件名,则无关紧要;操作系统并不关心,Python也不关心;打开的文件对象是不同的。

Python对象本身是不可变的;事后你不能改变模式,文件名或其他属性。

请注意,通过将+添加到模式,您可以读取写入文件对象; w+会先截断文件,而r+则不会。

答案 1 :(得分:0)

在操作系统级别,它们将被创建为两个不同的文件描述符。它们(可能)指向VFS /缓存中的相同数据,但可以独立操作。