backslash woes........
gbreed at cix.compulink.co.uk
gbreed at cix.compulink.co.uk
Tue Jul 10 07:33:37 EDT 2001
In article <Xns90DA75C5FEBC9duncanrcpcouk at 127.0.0.1>,
duncan at NOSPAMrcp.co.uk (Duncan Booth) wrote:
> "Duncan Booth" <duncan at NOSPAMrcp.co.uk> wrote in
> news:Xns90DA74BD3B968duncanrcpcouk at 127.0.0.1:
>
> > Martin Franklin <martin.franklin at westerngeco.com> wrote in
> > news:3B4AC7C2.DD53F6BB at westerngeco.com:
> >
> >> I am having trouble with windows path names (i'm a UNIX'ite)
>
> Another useful tip to remember is that except for the DOS command
> prompt, and some badly behaved applications, Windows actually supports
> both forward slash and backslash as path separators. So in a Python
> program (or most other languages) you can use forward slashes anywhere
> you want to write a pathname.
So long as you aren't using data given to you by the OS. In this case, I
think the duality is more of a problem than a solution. Here's a function
that I think solves the poster's original problem:
def getPrefixRelatives(*filenames):
"""return the common prefix of the filenames
and each filename relative to that prefix
"""
# make sure all paths are spelt the same
normalized = map(os.path.normpath, filenames)
prefix = os.path.commonprefix(normalized)
return(prefix, [
filename[len(prefix):] for filename in normalized])
>>> import os
>>> getPrefixRelatives('c:/python/first.py', 'c:\\python\\sub\\second.py')
('c:\\python\\', ['first.py', 'sub\\second.py'])
Returning UNIX-style / separated pathnames is left as an exercise for the
reader.
Graham
More information about the Python-list
mailing list