OS library
Get current path
Working directory
Absolute path to directory where you are executing from.
os.getcwd()
This is equivalent to this where os.curdir
is '.'
.
os.path.realpath(os.curdir)
Path to script
Path of the current file. e.g. abc.py
or foo/abc.py
.
__file__
Though, the variable __file__
is not defined in the interactive console.
Absolute path to the current file:
os.path.realpath(__file__)
Note that realpath
here is safer than using abspath
.
Directory of script
If the file is in the current working directory, the result will be an empty string.
os.path.dirname(__file__)
Absolute path to that file’s directory:
os.path.realpath(os.path.dirname(__file__))
Check access to a path
exists
os.path.exists(path)
check
# Exists
os.check(path, os.F_OK)
# Read
os.check(path, os.R_OK)
# Write
os.check(path, os.W_OK)
# Execte
os.check(path, os.X_OK)
Check type
os.path.isdir(path)
os.path.isfile(path)
os.path.islink(path)
os.path.isabs(path)
Format path
Absolute
os.path.abspath(path)
Real
The “canonical” path:
os.path.realpath(path)
- Resolves symlinks.
- Does not resolve
~
.
Relative
Convert to relative:
os.path.relpath(path)
Expand user path
os.path.expanduser("~/file.txt")
Join
os.path.join(foo, bar)
Split
Get directory
Of a file:
os.path.dirname('foo/bar/baz.txt')
# => 'foo/bar'
Of a directory:
os.path.dirname('foo/bar')
# => 'foo'
Note if it ends in forwardslash it will just remove that.
os.path.dirname('foo/bar/')
# => 'foo/bar'
Base
Get the last part of a path - whether a directory or filename.
os.path.basename('foo/bar/baz.txt')
# => 'baz.txt'
os.path.basename('foo/bar')
# => 'bar'
If ending in forwardslash is empty.
os.path.basename('foo/bar/')
# => ''
Traverse
Parent directory
Get the parent directory of a file or directory:
os.path.dirname(path)
If you need to get the symbol for parent directory”
os.path.pardir
# => '..'