Python os.access() 方法



Python os.access() 方法使用真实的 uid/gid 来测试对路径/文件夹的访问。Linux 为系统上的每个用户分配一个 UID(用户标识符),以标识他们可以访问哪些系统资源。GID (Group Identifier) 用于定义 Linux 中的组。

此例程可用于 suid/sgid 环境中,以测试调用用户是否具有对 path 的给定访问权限,因为大多数操作将使用有效的 uid/gid。如果允许访问,则返回 True,如果不允许,则返回 False。

语法

以下是 Python os.access() 方法的语法 -


 os.access(path, mode);

参数

  • path − 这是将测试是否存在或任何访问权限的路径。
  • mode − 这应该是 F_OK 以测试 path 是否存在,也可以是 R_OK、W_OK 和 X_OK 中的一个或多个非独占 OR 来测试权限。
    • os.F_OK − 作为 access() 的 mode 参数传递的值,以测试 path 是否存在。
    • os.R_OK − 包含在 access() 的 mode 参数中的值,用于测试 path 的可读性。
    • os.W_OK − 包含在 access() 的 mode 参数中的值,用于测试 path 的可写性。
    • os.X_OK - 要包含在 access() 的 mode 参数中的值,以确定是否可以执行 path。

返回值

如果允许访问,则此方法返回 True,如果不允许,则返回 False。

示例 1

以下示例显示了 Python os.access() 方法的用法。在这里,我们将文件的不同路径及其模式作为参数传递给该方法。


import os, sys
# Assuming /tmp/foo.txt exists and has read/write permissions.
ret = os.access("/tmp/foo.txt", os.F_OK)
print ("F_OK - return value %s"% ret)
ret = os.access("/tmp/foo.txt", os.R_OK)
print ("R_OK - return value %s"% ret)
ret = os.access("/tmp/foo.txt", os.W_OK)
print ("W_OK - return value %s"% ret)
ret = os.access("/tmp/foo.txt", os.X_OK)
print ("X_OK - return value %s"% ret)

当我们运行上述程序时,它会产生以下结果——

F_OK - return value True
R_OK - return value True
W_OK - return value True
X_OK - return value False

示例 2

在下面给出的示例中,os.access() 方法用于检查用户是否有权写入文件。这里我们首先使用 open() 函数打开文件。然后我们使用 write() 函数写入其中。此后,我们关闭文件


import os
# checking writability of the path
if os.access("code.txt", os.W_OK):
	 	with open("code.txt") as f:
	 	 	 f = open('code.txt', 'w')
	 	 	 words = "Welcome to qikepu"
	 	 	 x = f.write(words)
	 	 	 f.close()
	 	 	 print('Total characters written including spaces are:',x)
else:
	 	print("Something went wrong.")

在执行上述代码时,我们得到以下输出 -

Total characters written including spaces are: 25

示例 3

在这里,os.access() 方法用于确定用户是否有权在验证访问后打开文件。


import os
# checking the readability of the path
if os.access("code.txt", os.R_OK):
		 	# opening the txt file as f
		 	with open("code.txt") as f:
		 			 	print (f.read())
else:
	 	 # in case the file cannot be accessed
	 	 print ("Something went wrong.")

以下是上述代码的输出 -

Welcome to qikepu