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

2009-05-18 Thread Ulrich Eckhardt
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

-- 
http://mail.python.org/mailman/listinfo/python-list


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

2009-05-17 Thread Stef Mientki

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
--
http://mail.python.org/mailman/listinfo/python-list


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

2009-05-17 Thread Chris Rebert
On Sun, May 17, 2009 at 3:11 AM, Stef Mientki stef.mien...@gmail.com wrote:
 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 ?

Just always use forward-slashes for paths in the first place since
they work on both platforms.
But your technique seems a reasonable way of dealing with mixed-up
datafiles, since you're in that situation.

Cheers,
Chris
-- 
http://blog.rebertia.com
-- 
http://mail.python.org/mailman/listinfo/python-list