Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > os.path.split gets confused with combined \\ and /

Reply
Thread Tools

os.path.split gets confused with combined \\ and /

 
 
Stef Mientki
Guest
Posts: n/a
 
      05-17-2009
hello,

just wonder how others solve this problem:
I've to distribute both python files and data files.
Everything is developed under windows and now the datafiles contains
paths with mixed \\ and /.
Under windows everthing is working well,
but under Ubuntu / Fedora sometimes strange errors occurs.
Now I was thinking that using os.path.split would solve all problems,
but if I've the following relative path

path1/path2\\filename.dat

split will deliver the following under windows
path = path1 / path2
filename = filename.dat

while under Linux it will give me
path = path1
filename = path\\filename.dat

So I'm now planning to replace all occurences of os.path.split with a
call to the following function

def path_split ( filename ) :
# under Ubuntu a filename with both
# forward and backward slashes seems to give trouble
# already in os.path.split
filename = filename.replace ( '\\','/')

return os.path.split ( filename )

how do others solve this problem ?
Are there better ways to solve this problem ?

thanks,
Stef Mientki
 
Reply With Quote
 
 
 
 
Ulrich Eckhardt
Guest
Posts: n/a
 
      05-18-2009
Stef Mientki wrote:
> I've to distribute both python files and data files.
> Everything is developed under windows and now the datafiles contains
> paths with mixed \\ and /.


For your info: Some (!!!) parts of MS Windows understand forward slashes as
path separators and disallows them in file names, so you can often get away
with mixed paths. However, no POSIX system will understand a backslash as
path separator, which is a normal (though unusual) character in a file
name.

> Under windows everthing is working well,
> but under Ubuntu / Fedora sometimes strange errors occurs.
> Now I was thinking that using os.path.split would solve all problems,
> but if I've the following relative path
>
> path1/path2\\filename.dat
>
> split will deliver the following under windows
> path = path1 / path2
> filename = filename.dat
>
> while under Linux it will give me
> path = path1
> filename = path\\filename.dat
>
> So I'm now planning to replace all occurences of os.path.split with a
> call to the following function
>
> def path_split ( filename ) :
> # under Ubuntu a filename with both
> # forward and backward slashes seems to give trouble
> # already in os.path.split
> filename = filename.replace ( '\\','/')
>
> return os.path.split ( filename )
>
> how do others solve this problem ?
> Are there better ways to solve this problem ?


Your data files must not contain OS-dependent paths. So, I would recommend
that you simply use forward slashes exclusively there, because those are
most common as path separators. Under POSIX systems like Ubuntu, you can
then use them 'as-is', while under win32 you would first convert them to
paths with backslashes (os.path.separator). Generalised, you could do
something like this:

indep_path = string.split(line, data_path_separator)
native_path = os.path.join(indep_path)

'data_path_separator' would then of course have to be the type of path
separator that is defined for your data format, per above I would suggest
slashes.

Uli


--
Sator Laser GmbH
Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932

 
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
Return of gets gets John Joyce Ruby 0 04-23-2007 01:38 PM
gets gets John Joyce Ruby 2 03-26-2007 04:00 PM
XMLHttpRequest gets data to display in element but data gets appended not replaces previous! libsfan01 Javascript 5 12-20-2006 06:25 AM
Not only the selected HREF gets surrounded, but the whole row gets surrounded Stefan Mueller HTML 5 07-10-2006 11:53 AM
how to use windows and forma authentication combined kazazic@gmail.com ASP .Net 1 07-18-2005 01:50 PM



Advertisments