os.path.split: processing paths from one OS on another
Richie Hindle
richie at entrian.com
Tue Jan 27 11:52:32 EST 2004
Hi Martijn,
> My server needs to be run on either Linux or Windows, it receives
> requests from clients that may run either OS. To process those requests
> i need to split the path and filename. I hoped to solves this using
> os.path.split (), any suggestions as to how to fix this?
Explicitly use ntpath for Windows clients and posixpath for Linux clients:
>>> import ntpath, posixpath
>>> print ntpath.split('C:\\TEST\\FILE.EXT')
('C:\\TEST', 'FILE.EXT')
>>> print posixpath.split('/TEST/FILE.EXT')
('/TEST', 'FILE.EXT')
Alternatively, change your client to always use forward slashes - then it
(apparently) doesn't matter which you use:
>>> print posixpath.split('c:/test/file.exe')
('c:/test', 'file.exe')
>>> print ntpath.split('c:/test/file.exe')
('c:/test', 'file.exe')
>>> print posixpath.split('//server/share/file.exe')
('//server/share', 'file.exe')
>>> print ntpath.split('//server/share/file.exe')
('//server/share', 'file.exe')
Beware - there may well be cases where they differ.
Windows itself is happy using forward slashes as a directory separator, so
your client can use them throughout. It's only the Windows shell that
requires backslash rather than forward slash.
--
Richie Hindle
richie at entrian.com
More information about the Python-list
mailing list