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