Python os.path.samefile() 方法



Python os.path.samefile() 方法用于检查两个指定的路径是否引用文件系统中的同一文件或目录。它比较路径引用的实际文件或目录,而不仅仅是它们的路径字符串。

如果两个路径都指向同一个文件或目录(即使它们是使用不同的路径字符串指定的),该方法将返回 True。如果路径不引用同一文件或目录,则返回 False。

符号链接在比较之前解析为其目标路径,因此如果两个路径解析为相同的文件或目录,则 samefile() 方法返回 True。

语法

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


 os.path.samefile(path1, path2)

参数

此方法接受以下参数 -

  • path1 - 这是一个字符串,表示要比较的第一个路径名。
  • path2 - 这是一个字符串,表示要比较的第二个路径名。

返回值

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

在下面的示例中,我们使用 samefile() 方法检查 “path1” 和 “path2” 是否指向同一个文件 -


import os
path1 = "C://Users//Lenovo//Desktop//file.txt"
path2 = "C://Users//Lenovo//Desktop//file.txt"
result = os.path.samefile(path1, path2)
print("The result obtained is:",result) 		

输出

以下是上述代码的输出 -

The result obtained is: True

在这里,我们检查两个不同的路径 “path1” 和 “path2” 是否指向同一个文件 -


import os
path1 = "C://Users//Lenovo//Desktop//file.txt"
path2 = "C://Users//Lenovo//Documents//file.txt"
result = os.path.samefile(path1, path2)
print("The result obtained is:",result)	

输出

由于它们的路径不同,即使文件名相似,输出也会为 False,如下所示 -

The result obtained is: False

此示例检查 “path1” 和 “path2” 是否指向同一个文件。该方法将相对路径解析为绝对路径并比较它们 -


import os
path1 = "C://Users//Lenovo//Desktop//file.txt"
path2 = "../Desktop/file.txt"
result = os.path.samefile(path1, path2)
print("The result obtained is:",result)

输出

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

The result obtained is: True

现在,我们正在检查 “path1” 和 “path2” 是否指向同一个文件。由于这两个路径都不存在,因此该方法返回 “FileNotFoundError” -


import os
path1 = "/home/lenovo/documents/file.txt"
path2 = "/home/lenovo/documents/file.txt"
result = os.path.samefile(path1, path2)
print(result) 	

输出

生成的结果如下 -

Traceback (most recent call last):
File "C:\Users\Lenovo\Desktop\untitled.py", line 4, in <module>
result = os.path.samefile(path1, path2)
File "<frozen genericpath>", line 112, in samefile
FileNotFoundError: [WinError 3] The system cannot find the path specified: '/home/lenovo/documents/file.txt'