Why does python have os.path.curdir

python

Solution

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)

Problem

`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.

Original source