Python 打开(文件“wt”或“rt”)的对象是否不同?
当您这样做时:Python 打开(文件“wt”或“rt”)的对象是否不同?,python,file-io,immutability,mutable,Python,File Io,Immutability,Mutable,当您这样做时: file = open("my file","wt") 及 这两种方法都创建了我们在其上使用文件方法的文件对象。但是他们是否创建了不同的文件对象?如果他们正在创建不同的文件对象,那么可以公平地说“wt”对象是可变的,而“rt”对象是不可变的吗?在操作系统级别,它们将被创建为两个不同的文件描述符。它们(很可能)指向VFS/缓存中的相同数据,但可以独立操作。不,这不公平。您正在创建同一标准文件类型的实例,该类型代理对操作系统的文件操作调用。模式定义了操作系统允许您执行的操作 使用相
file = open("my file","wt")
及
这两种方法都创建了我们在其上使用文件方法的文件对象。但是他们是否创建了不同的文件对象?如果他们正在创建不同的文件对象,那么可以公平地说“wt”对象是可变的,而“rt”对象是不可变的吗?在操作系统级别,它们将被创建为两个不同的文件描述符。它们(很可能)指向VFS/缓存中的相同数据,但可以独立操作。不,这不公平。您正在创建同一标准
文件
类型的实例,该类型代理对操作系统的文件操作调用。模式定义了操作系统允许您执行的操作
使用相同的文件名或不同的文件名并不重要;操作系统不在乎,Python也不在乎;打开的文件对象是不同的
Python对象本身是不可变的;事后不能更改模式、文件名或其他属性
请注意,通过将
+
添加到模式,您可以读取和写入文件对象w+
将首先截断文件,而r+
不会。不同,是指不同的类型吗?因为它们至少都是不同的实例。“但是它们创建的文件对象不同吗?”请尝试open(“我的文件”,“wt”)==open(“我的文件”,“rt”)
。结果如何?
file = open("my file" , "rt")