Python: File Path Manipulation

By Xah Lee. Date: . Last updated: .

Here's most frequently used functions for manipulating file/directory path.

Get Directory Path

os.path.dirname(path)
Return the dir part of path. (result won't have ending slash, unless it's root dir.)
# python 3

import os.path

# get dir part of path
print(os.path.dirname("/home/aa/bb/ff.html"))
# /home/aa/bb

Get File Name Part of a Path

os.path.basename(path)
Return the file name. Sample return value: "cat.jpg"
# python 3

import os.path

# get file name part of a path
print(os.path.basename("/home/aa/bb/ff.html"))
# ff.html

Split Directory Part, File Part

os.path.split(path)
Return a 2-tuple. Split a path into dir part and file part. (note: result of dir part don't have ending slash, unless it's root dir.)
# python 3

# split path into dir part, file part

import os.path

fp = "/home/aa/bb/ff.html"

print(os.path.split(fp))
# ('/home/aa/bb', 'ff.html')

Get File Extension

os.path.splitext(path)
Return a 2-tuple. Split a path into first part and file extension part.
# python 3

import os.path

x = os.path.splitext("/home/aa/bb/ff.html")

print(x)
# ('/home/aa/bb/ff', '.html')

# get file extension
print(x[1])
# .html

Check File Exists

os.path.exists(path)
Return True if the file exists, else False.
# python 3

# check if file exists

import os.path

print(os.path.exists("/home/"))
# True

Get Relative Path

os.path.relpath(path, dir)
Return a relative path, of path with respect to dir. (Note: path existence is not checked.)
# python 3

# compute relative path

import os.path

print(os.path.relpath("/home/aa/bb/ff.html", "/home/aa/"))
# bb/ff.html

Absolute Path

os.path.abspath(path)
Return a normalized absolutized version of path. Note: it does not resolve symbolic links to its destination.
# python 3

# get absolute path

import os.path

fp = "/usr/bin/../bin/vi"

# remove redundant ../
print(os.path.normpath(fp))
# /usr/bin/vi

# similar to os.path.normpath(fp) but does a bit more
print(os.path.abspath(fp))
# /usr/bin/vi

Real Path of Symbolic Link

os.path.realpath(path)
Return the canonical path, resolve symbolic links.
# python 3

# resolve symbolic link

import os.path

print(os.path.realpath("/usr/bin/vi"))
# /usr/bin/vim

Python: Paths Topic

Python Text Processing

Python

Regex

Text Processing

Web

Misc