Python os.access() 方法



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

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

语法

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

os.access(path, mode);

参数

  • path - 这是要测试是否存在或任何访问权限的路径。

  • mode - 应为 F_OK 以测试路径的存在,或者可以是 R_OK、W_OK 和 X_OK 中的一个或多个的包含或运算,以测试权限。

    • os.F_OK - 传递给 access() 的 mode 参数的值,以测试路径的存在。
    • os.R_OK - 包含在 access() 的 mode 参数中的值,以测试路径的可读性。
    • os.W_OK - 包含在 access() 的 mode 参数中的值,以测试路径的可写性。
    • os.X_OK - 包含在 access() 的 mode 参数中的值,以确定路径是否可以执行。

返回值

如果允许访问,此方法返回 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 tutorialspoint"
      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 tutorialspoint
os_file_methods.htm
广告

© . All rights reserved.