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

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

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

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