Why does python have os.path.curdir

Question:

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.
enter image description here

Asked By: boatcoder

||

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)
Answered By: Martijn Pieters

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 via os.path.

You might consider using os.getcwd() instead.

Answered By: cdhowie

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

Answered By: Dietrich Epp
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.