They are same, but which one should I use?
The character used by the operating system to separate pathname components. This is ‘/’ for POSIX and ‘\’ for Windows. Note that knowing this is not sufficient to be able to parse or concatenate pathnames — use os.path.split() and os.path.join() — but it is occasionally useful. Also available via os.path.
os.path.sep to make it very clear that it’s the path separator… But consistency is more important, so if one is already being used, use that. Otherwise, pick one and use it all the time.
Edit: Just to make sure you’re not reinventing the wheel, though, the
path module already has
basename functions… So you should rarely need to use
>>> os.path.join("foo", "bar", "baz") 'foo/bar/baz' >>> os.path.split(_) ('foo/bar', 'baz')
I recommend you use
os.path.sep for clarity, since it’s a path separator, not an OS separator. If you
import os.path as path you can call it
path.sep, which is even better.
If you are using Jython 2.7, I suggest using
os.sep (works) instead of
os.path.sep (broken) as Jython on Windows has a bug returning a
"/" slash instead of the required
The following examples could highlight the differences between os.path.join and os.path.sep.join.
os.path.join(“output”, “images”, “saved”)
os.path.sep.join([“output”, “images”, “saved”])
I guess the os.path.sep.join is more robust and can be used w/o modifications for any os.