Using Python's stat function to efficiently get owner, group and other permissions
octal, permissions, python, stat
Solution
You could use the bitwise AND operator:
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)
...
Problem
Question: How do I efficiently use the stat function to get meaningful file permissions (User, Group and Other). Details: I am querying the file permissions like so: ``` statInfo = os.stat permissions = stat.S_IMODE ( os.stat ( 'fooBar.txt' ).st_mode ) ``` This returns the permissions in decimal form. So if `fooBar.txt` has the octal file permissions `0700`, here `permissions` is set to the decimal value`448`. What I want is to set 9 variables for each permission (`ownerRead`, `ownerWright`, `ownerExecute`, `groupRead`,...) If I was going to do this, I'd use a brute force method like so: ``` 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 ``` Is there a more efficient way to do this without having to convert to octal as this function will get called quite a bit?