
Hi everyone, 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? On Sat, Jan 9, 2016 at 6:11 PM, Chris Angelico <rosuav@gmail.com> wrote:
On Sun, Jan 10, 2016 at 3:06 AM, Ram Rachum <ram@rachum.com> wrote:
Thanks for the reference. Personally I think that `my_path.stat().st_mode & stat.S_IXGRP` is not human-readable enough. I'll work on a nicer API. Probably this for the same action you described:
'x' in my_path.chmod()['g']
Okay. I'm not sure how popular that'll be, but sure.
As an alternative API, you could have it return a tuple of permission strings, which you'd use thus:
'gx' in my_path.mode() # Group eXecute permission is set
But scratch your own itch, and don't give in to the armchair advisers.
ChrisA _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/