[Python-ideas] More friendly access to chmod

Marcin Sztolcman marcin at urzenia.net
Mon Jan 11 07:57:02 EST 2016


On Mon, Jan 11, 2016 at 1:02 PM, Ram Rachum <ram at rachum.com> wrote:

> I spent some time thinking about this. I come up with a big and impressive
> API, then figured it's overkill, shelved it and made a simpler one :)
>
> Here's my new preferred API. Assume that `path` is a `pathlib.Path` object.
>
>         Checking the chmod of the file:
>             int(path.chmod) # Get an int 393 which in octal is 0o611
>             oct(path.chmod) # Get a string '0o611'
>             str(path.chmod) # Get a string 'rw-r--r--'
>             repr(path.chmod) # Get a string '<Chmod: rw-r--r-- / 0o611>
>
>         Modifying the chmod of the file:
>             path.chmod(0o611) # Set chmod to 0o611 (for backward
> compatibility)
>             path.chmod = 0o611 # Set chmod to 0o611
>             path.chmod = 393 # Set chmod to 0o611, which is 393 in decimal
>             path.chmod = other_path.chmod # Set chmod to be the same as that
> of some other file
>             path.chmod = 'rw-r--r--' # Set chmod to 0o611
>             path.chmod += '--x--x--x' # Add execute permission to everyone
>             path.chmod -= '----rwx' # Remove all permissions from others
>
> I've chosen += and -=, despite the fact they're not set operations, because
> Python doesn't have __inand__. On an unrelated note, maybe we should have
> __inand__? (I mean x ^~= y)
>
> What do you think?

There is only one way...? ;)

My proposal (used for some time in few private projects, but extracted
as standalone few days ago):
https://github.com/msztolcman/fileperms

-- 
Marcin Sztolcman :: http://urzenia.net/ :: http://sztolcman.eu/


More information about the Python-ideas mailing list