ITPub博客

首页 > > > 使用Python的stat函数有效地获得所有者,组和其他权限

使用Python的stat函数有效地获得所有者,组和其他权限

作者:westwolf 时间:2019-10-09 09:47:46 0 删除 编辑

Python之眼 



题:

如何有效使用stat函数获取有意义的文件权限(用户,组和其他)。

细节:

我正在查询文件权限,如下所示:

statInfo = os.stat
permissions = stat.S_IMODE ( os.stat ( 'fooBar.txt' ).st_mode )


这将以十进制形式返回权限。因此,如果fooBar.txt具有八进制文件权限0700,则此处permissions设置为十进制值448。我想是设置9个变量对每个权限(ownerRead,ownerWright,ownerExecute,groupRead,...)如果我要做到这一点,我会用蛮力方法如下所示:


statInfo = os.stat
permissions = stat.S_IMODE ( os.stat ( 'fooBar.txt' ).st_mode )
octPermissions = oct ( permissions )
ownerRead = octPermissions [1] >= 4
ownerWrite = octPermissions [1] == 2 or octPermissions [1] == 6 or octPermissions [1] == 3 or 
ownerExecute = octPermissions [1] == 1 or octPermissions [1] == 5 or octPermissions [1] == 3


有没有一种更有效的方法来执行此操作而不必转换为八进制,因为此函数会被调用很多?


解决方案

可以使用按位AND运算符:

m = os.stat('fooBar.txt').st_mode
otherExec = bool(m & 0001)
otherWrite = bool(m & 0002)
otherRead = bool(m & 0004)
groupExec = bool(m & 0010)
groupWrite = bool(m & 0020)
groupRead = bool(m & 0040)
...


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/4662/viewspace-3165450/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-07-26

  • 博文量
    307
  • 访问量
    21684