os.path.curdir returns '.' which is totally truthful and totally worthless. To get anything useful from it, you have to wrap it with os.path.abspath(os.path.curdir)
Why include a useless variable in the os.path module? Why not have os.path.curdir be a function that does the os.path.abspath for you?
Is there some historic reason for os.path.curdir to exist?
Maybe useless is a bit harsh, but not very useful seems weak to describe this. 
3 Answers
It is a constant, just like os.path.sep.
Platforms other than POSIX and Windows could use a different value to denote the 'current directory'. On Risc OS it's @ for example, on the old Macintosh OS it's :.
The value is used throughout the standard library to remain platform agnostic.
Use os.getcwd() instead; os.path.abspath() uses that function under the hood to turn os.path.curdir into the current working directory anyway. Here is the POSIX implementation of abspath():
def abspath(path): """Return an absolute path.""" if not isabs(path): if isinstance(path, _unicode): cwd = os.getcwdu() else: cwd = os.getcwd() path = join(cwd, path) return normpath(path) 1The value of os.path.curdir is "." on Linux, Windows, and OS X. It is, however, ":" on old Mac OS 9 systems. Python has been around long enough that this used to be important.
It's just a constant, platform-dependent value. From the docs (which are worth reading):
The constant string used by the operating system to refer to the current directory. This is
'.'for Windows and POSIX. Also available viaos.path.
You might consider using os.getcwd() instead.