Python os.path.sameopenfile() 方法



Python os.path.sameopenfile() 方法用于检查两个文件描述符是否引用文件系统中的同一文件或目录。

如果两个文件描述符引用同一个打开的文件或目录(即使它们是不同的描述符),该方法将返回 True。如果文件描述符不引用同一打开的文件或目录,则返回 False。

语法

以下是 Python os.path.sameopenfile() 方法的基本语法 -


 os.path.sameopenfile(fp1, fp2)

参数

此方法接受以下参数 -

  • FP1 -这是要比较的第一个文件的文件描述符。
  • FP2 -这是要比较的第二个文件的文件描述符。

返回值

该方法返回布尔值 “True” 或 “False”。如果两个文件描述符都引用同一个文件,则返回 True,否则返回 False。

在以下示例中,我们将使用不同的文件描述符“fd1”和“fd2”打开同一文件“C://Users//Lenovo//Desktop//file.txt”两次。然后,我们使用 sameopenfile() 方法检查两个文件描述符是否引用同一个文件 -


import os
fd1 = os.open("C://Users//Lenovo//Desktop//file.txt", os.O_RDONLY)
fd2 = os.open("C://Users//Lenovo//Desktop//file.txt", os.O_RDONLY)
result = os.path.sameopenfile(fd1, fd2)
print("The result obtained is:",result) 	 	

输出

以下是上述代码的输出 -

The result obtained is: True

在这里,我们打开两个不同的文件,具有不同的文件描述符 “fd1” 和 “fd2”。然后,我们检查两个文件描述符是否引用同一个文件 -


import os
fd1 = os.open("C://Users//Lenovo//Desktop//file.txt", os.O_RDONLY)
fd2 = os.open("C://Users//Lenovo//Desktop//file2.txt", os.O_RDONLY)
result = os.path.sameopenfile(fd1, fd2)
print("The result obtained is:",result) 		

输出

上述代码的输出如下 -

The result obtained is: False

此示例使用文件描述符 “fd1” 打开文件 “file.txt”,关闭 “fd1”,使用新的文件描述符 “fd2” 再次打开同一文件,并检查两个文件描述符是否引用同一文件。

即使 “fd1” 已关闭,其文件描述符仍与同一文件相关联,直到操作系统重用它,因此输出为 True“ -


import os
fd1 = os.open("C://Users//Lenovo//Desktop//file.txt", os.O_RDONLY)
os.close(fd1)
fd2 = os.open("C://Users//Lenovo//Desktop//file.txt", os.O_RDONLY)
result = os.path.sameopenfile(fd1, fd2)
print("The result obtained is:",result) 		

输出

生成的结果如下 -

The result obtained is: True

现在,我们打开两个文件描述符为 “fd1” 和 “fd2” 的文件,然后检查两个文件描述符是否引用同一个文件。由于这两个文件都不存在,因此该方法返回 “FileNotFoundError” -


import os
fd1 = os.open("/home/lenovo/documents/file.txt", os.O_RDONLY)
fd2 = os.open("/home/lenovo/documents/file.txt", os.O_RDONLY)
result = os.path.sameopenfile(fd1, fd2)
print("The result obtained is:",result) 	

输出

我们得到的输出如下所示 -

Traceback (most recent call last):
File "C:\Users\Lenovo\Desktop\untitled.py", line 2, in <module>
fd1 = os.open("/home/lenovo/documents/file.txt", os.O_RDONLY)
FileNotFoundError: [Errno 2] No such file or directory: '/home/lenovo/documents/file.txt'