Python | os.access 函数

最近更新时间 2020-12-04 11:02:37

os.access 函数使用当前 uid/gid 测试路径是否有权限,主要用于判断当前用户对目录或文件是否有查看、读写等权限。os.access 需要传入 path 和 mode 参数,否则会抛 TypeError 异常。

函数定义

os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)

参数

  • checkpath - 目录或文件路径
  • checkmodel - 需要检测的操作,可进行 “或” 运算来指定多个操作:
    • os.F_OK: 检测路径是否存在。
    • os.R_OK: 检测路径是否可读。
    • os.W_OK: 检测路径是否可写。
    • os.X_OK: 检测路径是否可执行。

返回值

  • checkTrue - 检测通过返回 True 否则返回 False。

示例1: - 使用 os.access() 函数检测文件是否存在和可读写。

# coding=utf-8

# Python3 代码
# 使用 os.access() 检测文件权限

# 引入 os 库
import os

path = './nohup.out'

# 检测文件是否存在
if (os.access(path, os.F_OK)):
    print('nohup.out 文件存在')

# 检测文件是否可读写
if (os.access(path, os.W_OK|os.R_OK)):
    print('nohup.out 可读写')

if (not os.access(path, os.X_OK)):
    print('nohup.out 不可执行')
nohup.out 文件存在
nohup.out 可读写
nohup.out 不可执行
注:即使 os.access 返回 True ,在实际操作仍可能会失败,特别是对网络文件系统的操作。

在 3.6 版本后 path 可以支持类路径对象。

示例2: - 使用 os.access() 函数检测文件权限,再使用 open() 函数打开文件。推荐使用 EAFP 技术,如下所示:

# coding=utf-8

# Python3 代码
# 使用 os.access() 检测文件权限

# 引入 os 库
import os

path = './nohup.out'

# 检测文件权限,读取文件
if os.access(path, os.R_OK):
    with open(path) as fp:
        # 读取文件内容
        print(fp.read())

# 推荐使用,EAFP 技术,如下所示
try:
    fp = open(path)
except PermissionError:
    # 可进行错误处理或设置默认值
    pass
else:
    with fp:
        # 读取文件内容
        print(fp.read())
文件内容...
rss_feed