Python判断某个用户对某个文件的权限


Posted in Python onOctober 13, 2016

在Python我们要判断一个文件对当前用户有没有读、写、执行权限,我们通常可以使用os.access函数来实现,比如:

# 判断读权限
os.access(<my file>, os.R_OK)
# 判断写权限
os.access(<my file>, os.W_OK)
# 判断执行权限
os.access(<my file>, os.X_OK)

# 判断读、写、执行权限
os.access(<my file>, os.R_OK | os.W_OK | os.X_OK)

但是如果要判断任意一个指定的用户对某个文件是否有读、写、执行权限,Python中是没有默认实现的,此时我们可以通过下面的代码断来判断

import os
import pwd
import stat
 
def is_readable(cls, path, user):
  user_info = pwd.getpwnam(user)
  uid = user_info.pw_uid
  gid = user_info.pw_gid
  s = os.stat(path)
  mode = s[stat.ST_MODE]
  return (
    ((s[stat.ST_UID] == uid) and (mode & stat.S_IRUSR > 0)) or
    ((s[stat.ST_GID] == gid) and (mode & stat.S_IRGRP > 0)) or
    (mode & stat.S_IROTH > 0)

    )
def is_writable(cls, path, user):
  user_info = pwd.getpwnam(user)
  uid = user_info.pw_uid
  gid = user_info.pw_gid
  s = os.stat(path)
  mode = s[stat.ST_MODE]
  return (
    ((s[stat.ST_UID] == uid) and (mode & stat.S_IWUSR > 0)) or
    ((s[stat.ST_GID] == gid) and (mode & stat.S_IWGRP > 0)) or
    (mode & stat.S_IWOTH > 0)

    )


def is_executable(cls, path, user):
  user_info = pwd.getpwnam(user)
  uid = user_info.pw_uid
  gid = user_info.pw_gid
  s = os.stat(path)
  mode = s[stat.ST_MODE]
  return (
    ((s[stat.ST_UID] == uid) and (mode & stat.S_IXUSR > 0)) or
    ((s[stat.ST_GID] == gid) and (mode & stat.S_IXGRP > 0)) or
    (mode & stat.S_IXOTH > 0)

    )

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现马耳可夫链算法实例分析
May 20 Python
Python字符串、元组、列表、字典互相转换的方法
Jan 23 Python
Python numpy 提取矩阵的某一行或某一列的实例
Apr 03 Python
python实现读取大文件并逐行写入另外一个文件
Apr 19 Python
tensorflow使用神经网络实现mnist分类
Sep 08 Python
python使用udp实现聊天器功能
Dec 10 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
python程序控制NAO机器人行走
Apr 29 Python
python 按钮点击关闭窗口的实现
Mar 04 Python
django form和field具体方法和属性说明
Jul 09 Python
Python+unittest+DDT实现数据驱动测试
Nov 30 Python
从np.random.normal()到正态分布的拟合操作
Jun 02 Python
python使用str &amp; repr转换字符串
Oct 13 #Python
PYTHON 中使用 GLOBAL引发的一系列问题
Oct 12 #Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 #Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 #Python
Pyhton中单行和多行注释的使用方法及规范
Oct 11 #Python
使用Python脚本实现批量网站存活检测遇到问题及解决方法
Oct 11 #Python
深入浅析ImageMagick命令执行漏洞
Oct 11 #Python
You might like
thinkphp配置连接数据库技巧
2014/12/02 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
禁止刷新,回退的JS
2006/11/25 Javascript
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
JS实现把一个页面层数据传递到另一个页面的两种方式
2018/08/13 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
[02:17]快乐加倍!DOTA2食人魔魔法师至宝+迎霜节活动上线
2019/12/22 DOTA
python获得图片base64编码示例
2014/01/16 Python
从零学Python之引用和类属性的初步理解
2014/05/15 Python
浅析Python中的多进程与多线程的使用
2015/04/07 Python
Python NumPy库安装使用笔记
2015/05/18 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
python输出100以内的质数与合数实例代码
2018/07/08 Python
Python 动态变量名定义与调用方法
2020/02/09 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
python3.x中安装web.py步骤方法
2020/06/23 Python
2014年小学元旦活动方案
2014/02/12 职场文书
学习雷锋月活动总结
2014/07/03 职场文书
长城的导游词
2015/01/30 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
教师读书笔记
2015/06/29 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
世界十大评分最高的动漫,CLANNAD上榜,第八赚足人们眼泪
2022/03/18 日漫
Win11运行育碧游戏总是崩溃怎么办 win11玩育碧游戏出现性能崩溃的解决办法
2022/04/06 数码科技
MySQL事务操作的四大特性以及并发事务问题
2022/04/12 MySQL
SpringBoot详解整合Redis缓存方法
2022/07/15 Java/Android