Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Convert between Windows style paths and POSIX style paths

Reply
Thread Tools

Convert between Windows style paths and POSIX style paths

 
 
Noah
Guest
Posts: n/a
 
      07-10-2003
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
 
Reply With Quote
 
 
 
 
Peter Hansen
Guest
Posts: n/a
 
      07-10-2003
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
 
Reply With Quote
 
 
 
 
Cliff Wells
Guest
Posts: n/a
 
      07-10-2003
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


 
Reply With Quote
 
Mark Hadfield
Guest
Posts: n/a
 
      07-10-2003

"Peter Hansen" <> wrote in message
news:...
> 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"

National Institute for Water and Atmospheric Research (NIWA)



 
Reply With Quote
 
N.K
Guest
Posts: n/a
 
      07-11-2003
os.path.join is what you are looking for, i beleive

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

Regards
Nirmal

(Noah) wrote in message news:<. 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

 
Reply With Quote
 
Noah
Guest
Posts: n/a
 
      07-11-2003
Peter Hansen <> wrote in message news:<>...

> 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/.
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
portable C, posix C and windows C asit C Programming 22 10-10-2008 03:45 AM
Paths, gentleman, paths Ohad Lutzky Ruby 2 11-07-2006 02:15 AM
POSIX library for Windows XP Leonard J. Reder C Programming 3 04-13-2006 09:26 PM
POSIX regex character classes on Windows Platform Kevin Ruby 2 08-11-2005 01:31 AM
error C2440: 'return' : cannot convert from 'const char *' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast Abhijit Bhadra C++ 2 12-01-2004 04:43 PM



Advertisments