[Python-ideas] Add OS-dependent automatic glob support

Steven D'Aprano steve at pearwood.info
Mon Jan 5 18:10:55 CET 2015


On Mon, Jan 05, 2015 at 01:19:16PM +0900, Stephen J. Turnbull wrote:
> Steven D'Aprano writes:
> 
>  > In any case, having a platform specific globbing module
> 
> By "platform-specific", do you mean one module that handles all
> platforms appropriately (what this thread is about), or do you mean
> per-platform modules (what "platform-specific" means to me)?

Yes to both.

The model I am proposing is that of the os and os.path modules: we 
import os and it does the right thing for the current platform. In 
particular, os.path will do the right thing for the current platform, 
but you can import ntpath, posixpath, genericpath etc. to get behaviour 
for a specific platform.

I think we have to leave the glob module as-is, for backwards 
compatibility, and add a new package, say globbing (or osglob, the name 
can be bike-shedded to death later *wink*) with the new behaviour. 
globbing will look something like this:

globbing/
    __init__.py
    posix.py
    nt.py
    generic.py

(plus any other platforms that may need special treatment, if any) and 
the globbing/__init__.py implementation could potentially be as simple 
as "from foo import *" from the appropriate sub-module.

The globbing.generic implementation might be as simple as:

from glob import *

Or perhaps the relationship should go the other way? Move the current 
glob.py implementation into globbing.generic, and replace it with:

from globbing.generic import *

These little details are to be decided later, but the aim is:


* Current code that imports glob will continue to work the same 
  as it does now, warts and all.

* Code that imports globbing will do the right thing for the
  platform.

* If you want to apply globs to something other than file names,
  the right module to use would probably be globbing.generic
  (or possible fnmatch directly).



-- 
Steve


More information about the Python-ideas mailing list