[Python-3000] Path Reform: Get the ball rolling
fredrik at pythonware.com
Wed Nov 1 08:04:37 CET 2006
Mike Orr wrote:
> You may think 'shutil' has to do with shells, not paths.
well, it has; it provides Python implementations of selected shell commands.
> Why is 'split' in os.path but 'stat' and 'mkdir' and 'remove' are in
> os? Don't they all operate on paths?
no. are you saying that you're unable to see the conceptual difference
between a name and an object?
> There have been a few additional ideas on python-dev but no code.
> Nick Coghlan suggested separate classes for (A) string manipulation,
> (B) abstract path operations, (C) read-only inspection of filesystem,
> (D) add/remove files/directories/links.
that's the only remotely sane path-related proposal I've seen this far.
here's mine; it's fully backwards compatible, can go right into 2.6,
and can be incrementally improved in future releases:
1) add a pathname wrapper to "os.path", which lets you do basic
path "algebra". this should probably be a subclass of unicode,
and should *only* contain operations on names.
2) make selected "shutil" operations available via the "os" name-
space; the old POSIX API vs. POSIX SHELL distinction is pretty
irrelevant. also make the os.path predicates available via the
this gives a very simple conceptual model for the user; to manipulate
path *names*, use "os.path.<op>(string)" functions or the "<path>"
wrapper. to manipulate *objects* identified by a path, given either as
a string or a path wrapper, use "os.<op>(path)". this can be taught in
less than a minute.
More information about the Python-3000