Why Does Python Have Os. Path. Curdir

Why Does Python Have Os. Path. Curdir

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.

2

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)
1

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.

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

David Miller
Author

David Miller

David Miller brings 15 years of experience in global economics, personal finance strategy, and market dynamics. He specializes in turning complex economic trends into actionable insights for everyday readers.