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())
文件内容...