What's the perfect (OS independent) way of storing filepaths ?
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Sun Oct 19 11:30:30 EDT 2008
On Sun, 19 Oct 2008 14:35:01 +0200, Stef Mientki wrote:
> hello,
>
> I (again) wonder what's the perfect way to store, OS-independent,
> filepaths ?
"Perfect"? I can't imagine any scheme which will work on every imaginable
OS, past present and future.
However, in practice I think there are two common forms still in use:
Posix paths, and Windows paths. I believe that OS/2 can deal with Windows
pathnames, and Mac OS X uses Posix paths (I think...). If you have to
support Classic Mac OS or other non-Posix systems, then your life will
become interesting and complicated.
And let's not even consider Unicode issues...
You might find this page useful:
http://en.wikipedia.org/wiki/Path_(computing)
Note that raw strings are for regular expressions, not Windows paths. Raw
strings can't end in a backslash, so you can't do this:
r'C:\My Documents\'
Instead, you can avoid having to escape backslashes by taking advantage
of the fact that Windows will accept forward slashes as well as
backslashes as path separators, and write 'C:/My Documents/' instead.
I assume you're familiar with the path-manipulation utilities in os.path?
>>> import os
>>> os.path.splitdrive('C://My Documents/My File.txt')
('C:\\\\', 'My Documents\\My File.txt')
I had to fake the above output because I'm not running Windows, so excuse
me if I got it wrong.
But honestly, I think your biggest problem isn't finding a platform-
independent way of storing paths, but simply translating between each
OS's conventions on where files should be stored.
In Linux, config files should go into:
~/.<appname>/ or /etc/<appname>/
In Windows (which versions?) then should go into the Documents And
Settings folder, where ever that is.
There's no single string which can represent both of these conventions!
--
Steven
More information about the Python-list
mailing list