Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 打开(文件“wt”或“rt”)的对象是否不同?_Python_File Io_Immutability_Mutable - Fatal编程技术网

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")