Bengt Richter wrote:
> <indulging what="my penchant for seeking the general behind the specific ;-)" > > <fold> > > Say, how about > > if Pathobject('gui://message_box/yn/continue > processing?').open().read().lower()!='y': > raise SystemExit, "Ok, really not continuing ;-)" > > An appropriate registered subclass for the given platform, returned when the > Pathobject base class instantiates and looks at the first element on open() > and delegates > would make that possible, and spelled platform-independently as in the code > above. I like it. ;-) No reason why a path can't be associated to any tree based object. > </indulging> > > Regards, > Bengt Richter <more indulging> I wasn't sure what to comment on, but it does point out some interesting possibilities I think. A path could be associated to any file-like object in an external (or internal) tree structure. I don't see any reason why not. In the case of an internal file-like object, it could be a series of keys in nested dictionaries. Why not use a path as a dictionary interface? So it sort of raises the question of how tightly a path object should be associated to a data structure? When and where should the path object determine what the final path form should be? And how smart should it be as a potential file-like object? Currently the device name is considered part of the path, but if instead you treat the device as an object, it could open up more options. (Which would extend the pattern of your example above. I think.) (also a sketch.. so something like...) # Initiate a device path object. apath = device('C:').path(initial_path) # Use it to get and put data afile = apath.open(mode,position,units) # defaults ('r','line',next) aline = afile.read().next() # read next unit, or as an iterator. afile.write(line) afile.close() # Manually manipulate the path apath.append('something') # add to end of path apath.remove() # remove end of path alist = apath.split() # convert to a list apath.join(alist) # convert list to a path astring = str(apath()) # get string from path apath('astring') # set path to string apath.validate() # make sure it's valid # Iterate and navigate the path apath.next() # iterate path objects apath.next(search_string) # iterate with search string apath.previous() # go back apath.enter() # enter directory apath.exit() # exit directory # Close it when done. apath.close() etc... With this you can iterate a file system as well as it's files. ;-) (Add more or less methods as needed of course.) apath = device(dev_obj).path(some_path_sting) apath.open().write(data).close() or if you like... device(dev_obj).append(path_sting).open().write(data).close() Just a few thoughts, Cheers, Ron -- http://mail.python.org/mailman/listinfo/python-list