Convert between Windows style paths and POSIX style paths

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Noah

    Convert between Windows style paths and POSIX style paths

    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
  • Peter Hansen

    #2
    Re: Convert between Windows style paths and POSIX style paths

    Noah wrote:[color=blue]
    >
    > 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.[/color]

    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

    Comment

    • Mark Hadfield

      #3
      Re: Convert between Windows style paths and POSIX style paths


      "Peter Hansen" <peter@engcorp. com> wrote in message
      news:3F0DE565.1 CEA39C6@engcorp .com...[color=blue]
      > Noah wrote:[color=green]
      > >
      > > 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.[/color]
      >
      > 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?[/color]

      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@niwa .co.nz
      National Institute for Water and Atmospheric Research (NIWA)



      Comment

      • Cliff Wells

        #4
        Re: Convert between Windows style paths and POSIX style paths

        On Thu, 2003-07-10 at 13:44, Noah wrote:[color=blue]
        > 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.[/color]

        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


        Comment

        • N.K

          #5
          Re: Convert between Windows style paths and POSIX style paths

          os.path.join is what you are looking for, i beleive

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

          Regards
          Nirmal

          noah@noah.org (Noah) wrote in message news:<c9d82136. 0307101244.4594 e04d@posting.go ogle.com>...[color=blue]
          > 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[/color]

          Comment

          • Noah

            #6
            Re: Convert between Windows style paths and POSIX style paths

            Peter Hansen <peter@engcorp. com> wrote in message news:<3F0DE565. 1CEA39C6@engcor p.com>...
            [color=blue]
            > 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[/color]

            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/.

            Comment

            Working...