Tags: back, betweennt, buti, convert, forth, function, paths, posix, programming, python, style, trivial, windows

Convert between Windows style paths and POSIX style paths

On Programmer » Python

6,767 words with 5 Comments; publish: Wed, 26 Dec 2007 22:49:00 GMT; (20093.75, « »)

Does anyone have a function to convert back and forth between

NT style paths and POSIX style? It seems trivial, but

I want to make sure I don't overlook some obscure detail.

Is it a simple matter of translating / and \ characters?

FYI, I need a Python function that does what cygpath does so that

I can run a script on either NT or UNIX or Cygwin.

I want my config files use one style of path.

Yours,

Noah

All Comments

Leave a comment...

  • 5 Comments
    • Noah wrote:

      > Does anyone have a function to convert back and forth between

      > NT style paths and POSIX style? It seems trivial, but

      > I want to make sure I don't overlook some obscure detail.

      > Is it a simple matter of translating / and \ characters?

      > FYI, I need a Python function that does what cygpath does so that

      > I can run a script on either NT or UNIX or Cygwin.

      > I want my config files use one style of path.

      You can use forward slashes in paths under Win32, except at the

      command prompt.

      Even if you switch to use all forward slashes, however, what do

      you plan to do about drive letters? There is no obvious mapping

      to anything under POSIX, I think. Are you planning on disallowing

      paths that go anywhere but the current drive under NT?

      -Peter

      #1; Wed, 26 Dec 2007 22:51:00 GMT
    • "Peter Hansen" <peter.python.questionfor.info.engcorp.com> wrote in message

      news:3F0DE565.1CEA39C6.python.questionfor.info.engcorp.com...

      > Noah wrote:

      > > Does anyone have a function to convert back and forth between

      > > NT style paths and POSIX style? It seems trivial, but

      > > I want to make sure I don't overlook some obscure detail.

      > > Is it a simple matter of translating / and \ characters?

      > > FYI, I need a Python function that does what cygpath does so that

      > > I can run a script on either NT or UNIX or Cygwin.

      > > I want my config files use one style of path.

      > You can use forward slashes in paths under Win32, except at the

      > command prompt.

      > Even if you switch to use all forward slashes, however, what do

      > you plan to do about drive letters? There is no obvious mapping

      > to anything under POSIX, I think. Are you planning on disallowing

      > paths that go anywhere but the current drive under NT?

      Well, if you're running on an NT system with Cygwin installed, then the

      obvious thing to do (really the only sensible thing to do IMHO) is to use

      the mappings provided by Cygwin. These are set up in the registry and

      accessed via commands like mount and cygpath, which call functions in

      cygwin.dll. Eg my system has the following:

      D:\Cygwin <==> /

      D:\Local <==> /usr/local

      And if you want to do *that* then the easiest way, though not the fastest,

      is to run the cygpath command and trap the output. I have modules that do

      this in Windows & Cygwin Python, if you (meaning the OP) are interested.

      Another way is to access the registry and try to duplicate Cygwin's logic. I

      tried this but gave up on it--life's too short for that. Or you try to adapt

      the Cygwin C code. Or try to access the functions in cygwin.dll. Whatever.

      On an NT system without Cygwin, or on a Unix system, then there is no

      obvious mapping and (as far I can see) no need for one. Why do you want to

      use one style of path in your config files? Surely it would be better to use

      paths that are appropriate for the system, then process them with Python's

      os module.

      --

      Mark Hadfield "Ka puwaha te tai nei, Hoea tatou"

      m.hadfield.python.questionfor.info.niwa.co.nz

      National Institute for Water and Atmospheric Research (NIWA)

      #2; Wed, 26 Dec 2007 22:52:00 GMT
    • On Thu, 2003-07-10 at 13:44, Noah wrote:

      > Does anyone have a function to convert back and forth between

      > NT style paths and POSIX style? It seems trivial, but

      > I want to make sure I don't overlook some obscure detail.

      > Is it a simple matter of translating / and \ characters?

      > FYI, I need a Python function that does what cygpath does so that

      > I can run a script on either NT or UNIX or Cygwin.

      > I want my config files use one style of path.

      Just use POSIX paths and let the Python library sort it out. It works.

      If you really need to do the conversions yourself, take a look at the

      os.path module.

      --

      Cliff Wells, Software Engineer

      Logiplex Corporation (www.logiplex.net)

      (503) 978-6726 (800) 735-0555

      #3; Wed, 26 Dec 2007 22:53:00 GMT
    • os.path.join is what you are looking for, i beleive

      eg: appendedpath = os.path.join(dir1,filename)

      Regards

      Nirmal

      noah.python.questionfor.info.noah.org (Noah) wrote in message news:<c9d82136.0307101244.4594e04d.python.questionfor.info.posting.google.com>...

      > Does anyone have a function to convert back and forth between

      > NT style paths and POSIX style? It seems trivial, but

      > I want to make sure I don't overlook some obscure detail.

      > Is it a simple matter of translating / and \ characters?

      > FYI, I need a Python function that does what cygpath does so that

      > I can run a script on either NT or UNIX or Cygwin.

      > I want my config files use one style of path.

      > Yours,

      > Noah

      #4; Wed, 26 Dec 2007 22:54:00 GMT
    • Peter Hansen <peter.python.questionfor.info.engcorp.com> wrote in message news:<3F0DE565.1CEA39C6.python.questionfor.info.engcorp.com>...

      > You can use forward slashes in paths under Win32, except at the

      > command prompt.

      > Even if you switch to use all forward slashes, however, what do

      > you plan to do about drive letters? There is no obvious mapping

      > to anything under POSIX, I think. Are you planning on disallowing

      > paths that go anywhere but the current drive under NT?

      > -Peter

      I had forgotten that NT supports forward slashes.

      My only concern is that some of the config file values are

      set programatically and I use os.path.join everywhere, so if the

      config file is modified when running under Windows then the paths

      will get \ separators and that will confuse the UNIX side.

      I think I will still need something to ensure that the paths

      are consistent... Hmmm... I wonder how evil it would be to simply set

      os.sep = '/' when I initialize my application. I wonder if I will be

      angering the dark lords of Microsoft by doing this.

      I was going to simply remove the drive letter, so, yes, that would

      disallow paths other than the curent drive. I might also map the drive

      letters to a point on the POSIX path or I might do it Cygwin style

      where C: becomes /cygdrive/c/.

      #5; Wed, 26 Dec 2007 22:55:00 GMT